c语言伪代码的简单例子_单片机C语言实现简单的伪RTOS_1

本文介绍了作者在开发TI蓝牙芯片过程中,对伪RTOS的理解和实现方法。通过时间片轮询法,创建了按键和LED灯的两个任务,展示了如何在单片机上实现类似实时操作系统的效果。文中还提及了真RTOS与伪RTOS的区别,并探讨了Windows可能使用的假实时方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

9c9d034764ba26f40848e86d91fb4e88.png

笔者目前在开发TI的蓝牙芯片,CC2640,在开发一个与手机蓝牙通讯以实现单片机系统联结广域网功能的设备。本来想把自己开发的过程遇到的问题与困难分享出来,但是想到与我一样开发这样设备的朋友太少了,写在知乎不大好,于是还是打算将开发的过程分享到优快云上。

https://blog.youkuaiyun.com/Clarence_happy/article/details/88838008​blog.youkuaiyun.com

在开发CC2640前,笔者先是开发了CC2541,,CC2541是TI推出的蓝牙芯片,功能强大是没说了。这里为什么要提他,因为笔者使用官方提供的SDK开发套件代码的时候,看到了很多优秀的代码编辑方法,CC2541使用了类似TI-RTOS的实时操作系统,但是为什么说是类似的,因为我分明看到主函数的运行内容是C语言清晰可见的逻辑,并没有牵扯到底层堆栈、上下文信息保存、、等等这些操作系统必有的深奥东西,我想到CC2541上运行的也许并不是一个真正的实时操作系统。

这里笔者粗浅的说一下自己对真正操作系统的理解,希望各位朋友能斧正。

在51单片机中,笔者认为只有两个线程,一个是主线程,一个是中断线程。主线程运行在main中,是按顺序执行的代码序列,中断线程运行在特定硬件事件发生后,有对应的服务函数。这两个线程最大的特点是,主线程运行后,如果此时中断出现,系统会保护当前的各种重要数据,例如通用寄存器R0-R12和PC寄存器等等,这些信息都保存好,然后重新载入一系列中断服务函数需要的寄存器值,从而实现从主线程跳转到中断线程。

笔者认为,一个中断服务函数相当于一个中断线程,多个中断服务函数的话,会出现抢占的问题,但是优秀的处理器会处理好这些抢占的问题,例如NVIC不就是管理这些事情的吗?反正笔者认为线程的切换,换汤不换药,就是先保护现场,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值