完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我看了很久论坛地贴子,发现关于DMA的基本上都是发送数据,最近我要利用这个来接收串口的数据,于是思考良久。查阅资料,终于实现了。废话不说,上代码!
MYDMA_SConfig(DMA1_Channel5,(u32)&USART1->DR,(u32)&recbuff,20);//关键的语句1 LCD_ShowString(60,130,"Press KEY0 To Start!"); POINT_COLOR=BLUE;//设置字体为蓝色 i=0; while(1) { //if(1) //{ USART1->CR3=1<<6; //这一句就是使能DMA的接收 已经激活 前提 关键语句2 MYDMA_Enable(DMA1_Channel5);//开始一次DMA传输 (关键语句3) 上面在初始化的时候就已经定义,所以直接调用这个函数就会发送。 delay_ms(15); //等待DMA传输完成,此时我们来做另外一些事,点灯 for(k=0;recbuff[m]!=0;k++) { m++; } LCD_ShowNum(60,170,m,3,16); LCD_ShowString(60,150,recbuff); //显示接收到的语句4 // } i++; delay_ms(1); if(i==200) //0.2秒 { LED0=!LED0;//提示系统正在运行 i=0; } } } void MYDMA_SConfig(DMA_Channel_TypeDef*DMA_CHx,u32 cpar,u32 cmar,u16 cndtr) //DMA1通道5,外设为串口1,存储器为recbuff,长度20 { RCC->AHBENR|=1<<0;//开启DMA1时钟 __nop(); //等待 DMA1 时钟稳定 __nop(); //经测试最少 2 个 nop __nop(); DMA_CHx->CPAR=cpar; //DMA1 外设地址 上一句就 已经把串口的地址赋给了Base变量 DMA_CHx->CMAR=(u32)cmar; //DMA1,存储器地址 buff DMA1_MEM_LEN=cndtr; //保存DMA传输数据量 这一句就是数据的长度 DMA_CHx->CNDTR=cndtr; //DMA1,传输数据量 DMA_CHx->CCR=0X00000000;//复位 DMA_CHx->CCR|=0<<4; //从外设读 DMA_CHx->CCR|=0<<5; //普通模式 1为循环模式 DMA_CHx->CCR|=0<<6; //外设地址增量模式 DMA_CHx->CCR|=1<<7; //不执行存储器增量模式 DMA_CHx->CCR|=0<<8; //外设数据宽度为8位 DMA_CHx->CCR|=0<<10; //存储器数据宽度8位 DMA_CHx->CCR|=1<<12; //中等优先级 DMA_CHx->CCR|=0<<14; //非存储器到存储器模式 } 可以实现接收,但是不是很完善,,,,,希望有高手完善。 |
|
相关推荐
2个回答
|
|
谢谢共享.
|
|
|
|
注释有点问题,
DMA_CHx->CCR|=0<<6; //外设地址不增量模式 DMA_CHx->CCR|=1<<7; //执行存储器增量模式 DMA_CHx->CCR|=0<<5; //普通模式 0为不循环模式 我觉得你可以直接改成DMA_CHx->CCR|=1<<5; //普通模式 1为循环模式 这样你在while循环的时候,就可以一直读到数据了,而不用在20个数据读完之后,再重新开启DMA, 个人见解,谢谢, |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1763 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1617 浏览 1 评论
1059 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
723 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1670 浏览 2 评论
1933浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
726浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
566浏览 3评论
592浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
550浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 08:03 , Processed in 1.207161 second(s), Total 77, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号