打印
[STM32F0]

STM32F0系列芯片运行OS

[复制链接]
215|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
tpgf|  楼主 | 2024-5-28 11:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近买了一块开发板,STM32F103,关于OS移植的案例网上也很多,现在的STM32cube也能直接配置freertos,但是总感觉拿来主义不太好,还是学学OS的内核吧。
其实之前我并未接触过rtos,大概花了一周的时间看了ucosii,了解基本思想,跟着网上的教程,搭了一个简易的OS,确实没什么问题,在M3的内核上稳定运行,包含了抢占式调度。之后就想移植到M0的内核上看看,正好手上还有STM32F0的资源。

工作内容
1.用STM32CBUE生成基础工程;
2.中断优先级的配置,包含systick和pendsv中断优先级;
3.任务栈及任务控制块的建立;
4.pendsv_handle函数,包含上下文切换;(汇编)
5.systick_handle函数,包含任务选择;(部分汇编)
6.抢占式调度;
7.队列传输;

注意事项
具体的代码就不粘贴了,网上很多,简单讲讲遇到的几个坑吧

1.中断优先级配置,用的还是cortex M3的方式,汇编写的,实际调试的时候发现OS能跑起来,但是主堆栈一小会就溢出了,里面填了一些任务栈里面的内容,逐步定位到中断的问题。看了一下PendSV和Systick中断优先级根本没有配置上,后面用的是库函数的方式实现的配置,问题就解决了。

2.上下文切换的时候会用到汇编函数,因为M0用的是16位的thumb指令集,M3用的是32位的ARM指令集,有些汇编指令不一样,为了省事,我是先用cubeide生成了一个带freertos的工程,然后抄了一部分内容。

3.直接用LED工程的,注意delay函数,因为它也会重置计数器。
————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/kxh115136/article/details/139199132

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1536

主题

14520

帖子

9

粉丝