290_基于FreeRTOS的串口接收功能

69 篇文章 11 订阅
64 篇文章 165 订阅

完整的S32K144的学习汇总如下:

https://github.com/GreyZhang/g_s32k144

继续S32K144的学习,昨天实现了一个可靠的串口的接收功能。这也算是我自己的首次试水。当然,测试的结果看得出接收功能确实是很可靠了。不过今天继续看我的这个程序的时候,发现了一个问题:有几个FreeRTOS的任务被饿死了。

看了一下,应该是两个原因导致:1,优先级设置的过高;2,任务无法进入阻塞状态。因此,今天做了一点小改动,让软件的功能恢复正常。

  1. UART的接收设计为一个独立的Task,优先级设置为最低。

  1. 任务进行了重新设计,去掉了step函数,使用一个Task。同时,让这个Task可以进入到阻塞状态。

进行测试:

经过测试,这样的软件在不影响其他任务的前提下实现了可靠的串口接收功能。

完整的S32K144的学习汇总如下:

https://github.com/GreyZhang/g_s32k144

  • 5
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
CubeMX是一个集成开发环境(IDE),用于快速生成基于STM32微控制器的初始化代码。而FreeRTOS是一个开源的实时操作系统,常用于嵌入式系统中。 在使用CubeMX和FreeRTOS时,可以通过串口空闲接收来进行数据接收的处理。串口空闲接收是一种接收数据的方式,当串口接收到数据后,在一定时间内没有接收到新的数据时,可以判断数据接收完成,并触发接收完成的事件。 在CubeMX中,可以通过配置串口的空闲中断来实现串口空闲接收。首先在配置串口时,使能串口的空闲中断,并设置合适的空闲时间阈值。当串口接收到数据后,在一定时间内没有接收到新的数据时,空闲中断会触发,可以在中断服务函数中进行数据接收完成的处理。 在FreeRTOS中,可以通过创建一个任务来处理串口接收的数据。任务可以通过轮询的方式来检测串口是否接收到新的数据,并在接收到数据时进行处理。当串口接收到数据后,任务可以通过判断一定时间内是否没有接收到新的数据来判断数据接收完成,并进行后续的处理。 需要注意的是,在使用CubeMX和FreeRTOS时,需要根据具体的应用场景和需求来选择合适的串口接收方式。串口空闲接收适用于数据量较小且不需要实时性要求高的场景,如果需要实时性较高或者数据量较大的场景,可能需要使用其他方式来进行数据接收的处理。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值