RT-Thread学习笔记

背景:

参加2020嵌入式暨智能互联大赛,使用的是此前已经成型的作品:
外卖自提柜:
https://blog.csdn.net/weixin_44578655/article/details/105945891
比赛有使用RT-thread的选项,由于此前作品使用FreeRTOS,大体看了一下RT-thread的API文档,发现跟FreeRTOS比较像,决定移植一下。

感想:

RT-thread有原生中文文档,示例丰富,有官方的视频教程,对于初学者相当友好,相比FreeRTOS,我更推荐这个国产的实时操作系统作为入门的RTOS。

CubeMX生成 RT-thread nano工程(官方示例):

https://www.rt-thread.org/document/site/tutorial/nano/nano-port-cube/an0041-nano-port-cube/

RT-Thread时基的问题:

使用CubeMX生成工程时,RT-thread默认使用systick作为时基,而HAL库也需要一个时基,因此需要在CubeMX中更改一下HAL库的时基选项,选一个没有用到的定时器用于时基发生(这个操作在使用FreeRTOS也需要的,这不过FreeRTOS会弹出对话框提醒你,RT-thread没提醒,因此需要注意一下):
在这里插入图片描述

实际使用时,发现使用rt_thread_mdelay();进行ms级延时时,延时时间比正常大10倍,这一点我来回试验过好多次(stm32f1和stm32f4都是这样),不清除是否是我操作有误。
RT-thred在初始化systick时,调用了一个SystemCoreClockUpdate(),来获取系统时钟,但我debug时发现SystemCoreClock并不是正确的数值,因此导致rt-thread时基不准确。
在这里插入图片描述

因此我这里直接手动填入了系统时钟(stm32f405系统主频168M):
在这里插入图片描述

更改后使用 rt_thread_mdelay() 正常。

线程不能自己删除自己:

在RT-thread中,线程不能在运行时调用rt_thread_delete() 删除自己
(这一点跟在FreeRTOS不一样),如果要结束本线程的运行,直接return 即可,系统会自动回收线程的资源,这种操作仅限于使用rt_thread_create动态创建的线程。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值