完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
stm32cube mx作为ST官方生成固件极大的帮助了我们,不再为移植底层寄存器而浪费太多时间,但是在提高效率的同时,HAL库中还有一些莫名其妙的坑,需要我们自行解决的。对于只用中断接收数据不定长数据,作者还未使用过,还望大家能分享一下,本文只做简单的串口DMA+中断的形式接收不定长的数据接收,至于应用的话可以在这个的基础上自行发挥。
一目了然,这里开启RCC基本的高/低速外部时钟(HSE/LSE),调试的话使用的是SWO调试接口,接着就是使能我们所需要使用到的串口啦,这里使用的是USART2。 这里只需要注意两点: 1.串口要设置DMA接收 2.打开串口中断 然后直接生成KEIL文件就可以了。 首先第一步申请所需要使用的变量,第一个是接收缓冲区,接收缓冲区大小可以自己定义。第二个是串口串口接收完成标记,第三个是串口接收数据长度,注意程序放置的位置,否则在重新生成的时候配置工具会将不符合规范的程序段给删除。 usart.c文件uint8_t rx_buffer[BUFFER_SIZE]={0};/*串口接收缓冲区*/uint8_t recv_end_flag=0;/*串口接收完成标记*/uint16_t rx_len=0;/*串口接收数据长度*/ usart.h文件#define BUFFER_SIZE 256extern uint8_t rx_buffer[];extern uint8_t recv_end_flag;extern uint16_t rx_len; 然后第二步是在串口的中断函数中添加自己的代码。注意这里的读取串口剩余数量寄存器NDTR,不同的芯片这个寄存器是不同的,需要注意区分,有的芯片是CNDTR。这个结构体在stm32f405.h中的DMA控制器结构体函数。 最后一步,在main函数中添加上述的程序段,可以通过串口2接收串口工具发送的数据并将数据发送回去。 这样就完成啦!这只是个基础的程序,作者将这个作为基础开发过定位模块的数据读取和解析。DMA+中断的方式在串口需要在短时间内频繁的接收大量数据上还是非常好用的。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1621 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1546 浏览 1 评论
980 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
686 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1599 浏览 2 评论
1867浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
648浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
518浏览 3评论
534浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
506浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-23 18:11 , Processed in 0.785738 second(s), Total 78, Slave 61 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号