手写一个RTOS.2(编程模型)
2023-04-18 15:55:16 时间
参考的freeertos使用v9.0的版本。
自己下载的话,点击这个,也可以去我的Github上面下载
Keil里面的char默认是没有符号的,可以在这里配置为又符号的
头文件配置成这样的
- 用户代码
- 相关头文件
- 相关处理器的接口
/*----------------------------------------------------------------------------
Define clocks
*----------------------------------------------------------------------------*/
#define XTAL ( 5000000UL) /* Oscillator frequency */
#define SYSTEM_CLOCK (5U * XTAL)
然后system.c 的配置是这样的。
五五二十五了
更改是为了和仿真一样
这就算是解决上篇文章的所有心病啦~
其实我本应该直接上来写代码的,可是我费劲儿还写文章,所以我不介意再复杂些,把它说透。
我插一句,使用RTOS的时候,其实某种程度是不需要考虑这个顺序关系的,就是你创建的任务以后会根据调度去运行,顺序执行的观念被淡化了好多。
我们的51,或者Arduino这些比较简单的单片机,使用的编程模型(抱歉我的自大,给了起了名字)是轮询系统,说人话就是一个大循环,放上我们的子函数,开始运行,一次又一次。
就好像这样
它在做不需要响应外部事件的时候工作很漂亮~很漂亮,也叫裸机编程,对实时处理的事件反应不好。
我们给它升级一下,改善它的外部驱动功能。也叫前后台系统
顺序执行的时候,有个中断来了,那么系统的资源就给这个中断事件用了,如果这个事件很短那就再中断里面处理,长的话就去后台处理。加上中断的嵌套,这东西用的好还就是个操作系统的感觉。
这里画图了一下,就是这样的感觉
其实我觉得多任务系统,就是前后台系统,只不过更精妙一些而已。
大概是这样,具体的代码去Github看
在这个系统里面,根据功能的划分,我们把程序主体分为一个一个的小的死循环而且不返回任何东西的小程序。
一个任务
它们独立,互不干扰,还带有优先级(就像阶级一样)。编号以后给操作系统统一管理。也就是我说的,不用管执行顺序的问题了。
相关文章
- 抢夺6G标准的制定权 各国展开合纵连横战略
- Gartner:中国人工智能软件市场指南
- 2021年十二个主要的云计算趋势
- 5G赋能物联网生态系统,解决方案共创是关键
- 年中盘点:2021年炙手可热的10家网络初创公司
- 如何丝滑般将 Kubernetes 容器运行时从 Docker 切换成 Containerd
- 韩国:2031年之前将发射14颗6G通信卫星
- 谷歌前CEO:AI就像核武器,大国之间需要建立‘AI威慑’,确保相互毁灭
- IDC:2025年中国第三方云管理服务市场规模将达37.4亿美元
- 预见2032:探索人工智能与开发者的下一个十年
- 网络安全中的人工智能:优点和缺点
- 解密万亿参数M6模型预训练背后的分布式框架Whale
- Siri越来越“大众”,未来智能语音会有哪些突破?
- 算法模型的创新之道
- Longhorn,Kubernetes 云原生分布式块存储
- AI觉醒?国际象棋机器人急眼,竟折断7岁男孩手指
- 尴尬的400G:运营商骨干网什么时候才会商用?
- 混合云平台打破数据壁垒,人工智能激活数据价值
- 机器人的主要传感器有哪些 机器人的主要传感器介绍
- 网络为本,博睿数据NPMD用20%的投入实现80%的功能