提示:文章
文章目录
- 前言
- 一、背景
- 二、
- 2.1
- 2.2
- 总结
前言
前期疑问:
本文目标:
一、背景
2024年3月26日23:32:43
今天看了DMA存储器到存储器的DMA传输和存储器到外设的DMA实验,在keil仿真可以看到效果。还没有在protues和开发板上实验。先记录下来。
二、
2.1 存储器到存储器
存储器到存储器
代码提交记录:
SHA-1: bea0109310e47971a4869d13784445d9ee96f536
DMA实现存储器到存储器实验
//main.c文件
int main(void)
{
//RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);
/* LED 端口初始化 */
LED_GPIO_Config();
//按键初始化函数
gpio_init();
//EXTI按键初始化函数
bsp_exti_key_gpio_init();
bsp_exti_key_nvic_init();
bsp_exti_key_exti_init();
//RCC初始化
RCC_Init();
//USART初始化
InitGPIO();
InitUsart(); //包含了NVIC中断初始化
//USART_Config();
//DMA配置,存储器到存储器
DMA_Config();
char array[15] = "hello world\r\n";
while (1)
{
//key_process();
rcc_led_loop();
// for(int i = 0; i < 15; i++)
// {
// sendData(array[i]);
// }
// //Delay(1000000);
printf("hello world\r\n");
if(getBufferCmpResult())
{
printf("result is same!\r\n");
}
}
}
//打印信息
led_on();
led_off();
hello world
result is same!
led_on();
led_off();
hello world
result is same!
led_on();
led_off();
hello world
result is same!
led_on();
led_off();
hello world
result is same!
led_on();
led_off();
hello world
result is same!
led_on();
led_off();
2.2 存储器到外设
代码提交:
SHA-1: 8632c414141f7dae6c10e9617b1576f59a09d62e
DMA实现存储器到外设数据发送
//main文件
/**
* @brief 主函数
* @param 无
* @retval 无
*/
int main(void)
{
//RCC_SYSCLKConfig(RCC_SYSCLKSource_HSI);
/* LED 端口初始化 */
LED_GPIO_Config();
//按键初始化函数
gpio_init();
//EXTI按键初始化函数
bsp_exti_key_gpio_init();
bsp_exti_key_nvic_init();
bsp_exti_key_exti_init();
//RCC初始化
RCC_Init();
//USART初始化
InitGPIO();
InitUsart(); //包含了NVIC中断初始化
//USART_Config();
//DMA配置,存储器到存储器
DMA_Config();
/* 配置使用DMA模式 */
USARTx_DMA_Config();
printf("\r\n USART1 DMA TX 测试 \r\n");
int i = 0;
/*填充将要发送的数据*/
for (i=0; i<SENDBUFF_SIZE; i++)
{
SendBuff[i] = 'P';
}
/*为演示DMA持续运行而CPU还能处理其它事情,持续使用DMA发送数据,量非常大,
*长时间运行可能会导致电脑端串口调试助手会卡死,鼠标乱飞的情况,
*或把DMA配置中的循环模式改为单次模式*/
/* USART1 向 DMA发出TX请求 */
USART_DMACmd(USART1, USART_DMAReq_Tx, ENABLE);
char array[15] = "hello world\r\n";
while (1)
{
//key_process();
rcc_led_loop();
// for(int i = 0; i < 15; i++)
// {
// sendData(array[i]);
// }
// //Delay(1000000);
printf("hello world\r\n");
if(getBufferCmpResult())
{
printf("result is same!\r\n");
}
}
}
keil仿真实验效果
三、
3.1
总结
未完待续