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

在FreeRTOS中串口重定向使用HAL库函数中断出现异常

[复制链接]
懒得起名1 提问时间:2024-3-24 10:54 / 已解决

由于需要使用到FreeRTOS 考虑到ISR优先级会比任务优先级高,并且查看HAL_UART_Transmit函数实现需要使用到systick 。

HAL_UART_Transmit.png

HAL_UARTUntil.png

所以在重定义时使用了函数HAL_UART_Transmit_IT。但结果反而是IT函数出现异常。

IT.png

IT_1.png

而HAL_UART_Transmit正常输出

NotIT.png

有人遇到过此类情况吗?

不吝赐教。

收藏 评论3 发布时间:2024-3-24 10:54

举报

3个回答
落花又见流水 最优答案 回答时间:2024-3-24 11:15:27

HAL_UART_Transmit_IT函数只是准备在中断中发送,调用完后就退出了,但是数据还没发送出去的。后面要等待发送完成才行。你那没等待肯定数据被冲掉了。在中断回调函数搞个标志,等在标志变化。

HAL_UART_Transmit是调用后会等待发送完成之后才退出的。

xmshao 回答时间:2024-3-25 09:40:11
给你两点提醒:


第一点,当我们使用FREERTOS时,SYSTICK定时器一般都是给RTOS使用作为其任务调度滴答时钟,而HAL库函数
使用的滴答时钟往往会换成片内其它定时器外设,比如TIM6 TIM7这些基本定时器;


第二点,中断方式和非中断方式的通信函数的使用,要注意程序逻辑上的差异,一个触发式,一个是死等查询式;
废鱼 回答时间:2024-3-24 20:34:51

楼上说的是正解,如果需要用中断的话,建议加发送队列进行数据传输。保证前面的数据不会被覆盖掉。

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版