你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32H743 ucosii下的串口DMA发送和中断接收加空闲中断

[复制链接]
STMCU小助手 发布时间:2022-12-16 13:00
2.cubumx配置串口,如下图

20210809181914849.png

3.配置DMA

20210809182044660.png

4.配置中断

20210809182500957.png

2021080918251349.png

5.生成代码后,添加空闲中断使能代码


__HAL_UART_ENABLE_IT(&huart1, UART_IT_IDLE);//使能idle中断


6.h743的DMA比较特别,他有几个内存区,默认的内存区与DMA不相连,所以定义buf的时候要定义到与DMA相连的地址上

20210809190532354.png

20210809190632365.png

2021080919070283.png

7.所以修改工程下的stm32h743xx_flash.icf文件,添加如何下画圈部分

20210809191035844.png

8.定义buf时这样定义:

20210809191150773.png

9.串口DMA发送代码:

if(HAL_UART_Transmit_DMA(&huart1,cbuffer,csize) != HAL_BUSY)

10.串口中断接收代码

HAL_UART_Receive_IT(&huart1, cbuffer, RX_BUF_SIZE);

11.中断处理

20210809184129113.png

20210809184202141.png

12. usart1_Rx()   ,usart1_Tx()  为加入了环形队列的发送接收接口函数

13.中断中不能调用ucosii先关的函数,例如信号量的处理等,加了暴力测试串口时会出错,查了下貌似和内核管理中断有关,这个玩意CPU_CFG_KA_IPL_BOUNDARY。但也尝试了中断加OSIntEnter() 和OSIntExit(),修改中断号范围>CPU_CFG_KA_IPL_BOUNDARY, 也不行。
————————————————
版权声明:鱼入大海_


收藏 评论0 发布时间:2022-12-16 13:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版