完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
最近在用STM32F103的,想使用串口输出功能,导致各种坑,已开始使用了中断模式,有没有进不了中断,那就是硬故障,
网上阅读很多帖子都没有解决,果断摆脱 在本页末尾可以找到github链接(很快)。 步骤 1: 使用 CubeMX 创建您的项目并将两个 RX/TX DMA 放在串行接口上。Tx DMA 应处于正常模式,而 Rx 应处于循环模式。 第 2 步: 激活串行的 NVIC 中断。(DMA 需要它) 第 3 步: 基本上,我们要做的是让 DMA 读取 UART 并将它们放入一个数组中。通过将模式更改为循环,DMA 将无限期地继续此操作而不会中断(循环缓冲)。最重要的是,一个线程将收集数据并解析它们。出于这个原因,我们需要以下定义 #define UART_DMA_BUFFER_SIZE 2048 #define PARSER_MESSAGE_LIST_SIZE 8 #define PARSER_MESSAGE_SIZE 1024 第 4 步:使用 DMA 分配和激活 UART 接收并提供(足够大的)缓冲区。请注意,这种方法永远不会在 RX 上触发中断,并且该数组将用作循环缓冲区。 第 5 步: 创建一个 FreeRTOS 线程,该线程将监视缓冲区并将任何新数据复制到中间缓冲区以供进一步处理。 第 6 步: 现在我们将填充 UART 的解析器。正如我们之前所说,主要目的是从 DMA 缓冲区中获取所有新的可用数据并将它们放入消息列表中(每个完整的消息都应以 'rn' 字符结尾)。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1627 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1550 浏览 1 评论
984 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
688 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1601 浏览 2 评论
1867浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
650浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
518浏览 3评论
536浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
506浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 23:15 , Processed in 0.671799 second(s), Total 49, Slave 42 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号