提示:文章
文章目录
- 前言
- 一、背景
- 二、
- 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
总结
未完待续