STM32F0系列芯片运行OS

最近买了一块开发板,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函数,因为它也会重置计数器。

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值