0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

简述STM32单片机开发中的RTOS

STM32嵌入式开发 来源:STM32嵌入式开发 作者:STM32嵌入式开发 2021-06-28 14:53 次阅读

很多STM32单片机初学者都是从裸机开始的,裸机确实也能开发出好的产品。但是,作为一个嵌入式软件工程师,况且用的并不是51那种低端单片机,如果只会用裸机开发产品,那肯定是不够的。

要从裸机的思维转变到RTOS(Real Time Operating System)的思维,其实需要一个过程,而且开始的一段时间会很痛苦。但过一段时间理解了一些内容,能写一些Demo之后,你会发现其实RTOS也不难。

现在FreeRTOS在CubeMX工具中可以直接配置并使用,相当方便。

为什么需要RTOS

为什么我们需要RTOS?就像最开始学C编程时,老师告诉我们,指针很重要,那时你肯定有一个大的疑问,指针到底有什么好? 心里一直犯嘀咕着:不用指针不一样把程序编出来了? 现在想想看C语言没了指针,是不是“寸步难行”呢。 回到正题,我们到底为什么需要RTOS? 一般的简单的嵌入式设备的编程思路是下面这样的:

main{ {处理事务1}; {处理事务2}; {处理事务3}; 。。。。。。。 {处理事务N};}

isr_server{ {处理中断};}

这是最常见的一种思路,对于简单的系统当然是够用了,但这样的系统实时性很差。 比如“事务1”如果是一个用户输入的检测,当用户输入时,如果程序正在处理事务1下面的那些事务,那么这次用户输入将失效,用户的体验是“这个按键不灵敏,这个机器很慢”,而我们如果把事务放到中断里去处理。

虽然改善了实时性但会导致另外一个问题,有可能会引发中断丢失,这个后果有时候比“慢一点”更加严重和恶劣! 又比如事务2是一个只需要1s钟处理一次的任务,那么显然事务2会白白浪费CPU的时间。改进思路 看到上面裸机开发的局限了吗? 这时,我们可能需要改进我们的编程思路,一般我们会尝试采用“时间片”的方式。这时候编程会变成下面的方式:

main{ {事务1的时间片到了则处理事务1}; {事务2的时间片到了则处理事务2}; 。。。。。。。 {事务N的时间片到了则处理事务N};}

time_isr_server{ {判断每个事务的时间片是否到来,并进行标记};}

isr_server{ {处理中断};}

可以看到,这种改进后的思路,使得事务的执行时间得到控制,事务只在自己的时间片到来后,才会去执行。但这种方式仍然不能彻底解决“实时性”的问题,因为某个事务的时间片到来后,也不能立即就执行,必须等到当前事务的时间片用完,并且后面的事务时间片没到来,才有机会获得“执行时间”。

这时候我们需要继续改进思路,为了使得某个事务的时间片到来后能立即执行,我们需要在时钟中断里判断完时间片后,改变程序的返回位置,让程序不返回到刚刚被打断的位置,而从最新获得了时间片的事务处开始执行,这样就彻底解决了事务的实时问题。

我们在这个思路上,进行改进,我们需要在每次进入时钟中断前,保存CPU的当前状态和当前事务用到的一些数据,然后我们进入时钟中断进行时间片处理,若发现有新的更紧急的事务的时间片到来了,则我们改变中断的返回的地址,并在CPU中恢复这个更紧急的事务的现场,然后返回中断开始执行这个更紧急的事务。

使用RTOS的好处

上面那段话,对于初学者来说,可能有些不好理解。 事实上,这是因为要实现这个过程是有些复杂和麻烦的,这时候我们就需要找一个操作系统(OS)帮我们做这些事了,如果你能自己用代码实现这个过程,事实上你就在自己写操作系统了。

其实从这里也可也看出,操作系统的原理其实并不那么神秘,只是一些细节你很难做好。我们常见的RTOS基本都是这样的一个操作系统,它能帮你完成这些事情,而且是很优雅的帮你完成! 事实上,RTOS的用处远不止帮你完成这个“事务时间片的处理”,它还能帮你处理各种超时,进行内存管理,完成任务间的通信等。

有了RTOS,程序的层次也更加清晰,给系统添加功能也更方便,这一切在大型项目中越发的明显!

编辑:jq

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6036

    文章

    44556

    浏览量

    634990
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10859

    浏览量

    211692
  • RTOS
    +关注

    关注

    22

    文章

    811

    浏览量

    119614
  • c编程
    +关注

    关注

    0

    文章

    94

    浏览量

    29360

原文标题:STM32单片机开发中的RTOS

文章出处:【微信号:c-stm32,微信公众号:STM32嵌入式开发】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    单片机Debug工具性能对比 单片机调试常用命令

    单片机(Microcontroller Unit, MCU)调试是嵌入式开发的一个重要环节,它帮助开发者发现和修复代码的错误,优化程序性
    的头像 发表于 12-19 09:56 192次阅读

    STM32单片机的特点介绍

    和易用的工具,再配合强大的功能,在行业享有盛誉。 STM32单片机的特点主要体现在以下几个方面: STM32拥有强大的内核。它采用了ARM32位Cortex-M3 CPU,最高工作频
    的头像 发表于 09-25 17:19 1445次阅读

    基于STM32单片机的智能加湿器设计

    本文介绍了一种基于STM32单片机的智能加湿器。该加湿器配备了DHT11温湿度传感器、水位传感器和浊度传感器,数据通过单片机处理并显示在OLED屏幕上。用户可通过按键模块设置阈值,并在检测值与设定值
    的头像 发表于 09-14 08:04 1081次阅读
    基于<b class='flag-5'>STM32</b><b class='flag-5'>单片机</b>的智能加湿器设计

    单片机STM32可以用Python写吗?可以的开发板有哪些?

    近年来,随着嵌入式技术的发展,Python语言逐渐被引入到单片机开发,尤其是一些高性能的单片机上。这一趋势给开发者带来了极大的便利,尤其是
    的头像 发表于 09-05 08:00 3321次阅读
    <b class='flag-5'>单片机</b><b class='flag-5'>STM32</b>可以用Python写吗?可以的<b class='flag-5'>开发</b>板有哪些?

    stm32单片机用什么软件编程

    STM32单片机是一种广泛应用于嵌入式系统领域的微控制器,具有高性能、低功耗、丰富的外设接口等特点。要对STM32单片机进行编程,需要选择合适的软件工具。 概述
    的头像 发表于 09-02 10:16 1305次阅读

    stm32单片机引脚介绍及功能

    STM32系列单片机是STMicroelectronics(意法半导体)推出的一款基于ARM Cortex-M内核的32位微控制器。STM32单片机具有高性能、低功耗、丰富的外设和灵活
    的头像 发表于 09-02 09:38 5374次阅读

    stm32和51单片机的区别是什么

    架构差异: STM32是基于ARM Cortex-M系列内核的32位微控制器,具有更高效的处理能力和更丰富的外设。 51单片机是基于8051内核的8位微控制器,处理能力相对较低,外设也相对有限
    的头像 发表于 09-02 09:33 737次阅读

    stm32单片机的优势有哪些?

    STM32单片机还提供丰富的 外设和接口,如通信接口、模拟数字转换器(ADC)、定时器和PWM控制 等,方便开发人员在设计灵活应用。 3.开发
    发表于 07-29 09:29

    从菜鸟到大牛!嵌入式完整学习路线:STM32单片机-RTOS-Linux

    ​嵌入式系统是许多现代电子设备和智能系统的核心,掌握嵌入式系统,意味着能够设计和开发更加智能化的产品。本文为所有想进入嵌入式领域的初学者提供一个完整系统学习的路线图,按照“STM32单片机R
    的头像 发表于 07-23 16:11 4121次阅读
    从菜鸟到大牛!嵌入式完整学习路线:<b class='flag-5'>STM32</b><b class='flag-5'>单片机</b>-<b class='flag-5'>RTOS</b>-Linux

    基于STM32单片机的智能冰箱控制系统设计

    基于单片机设计的一款智能冰箱控制系统,可以控制冰箱的制冷装置,可以采集冰箱的异味浓度,超过闽值之后控制紫外灯进行消毒工作单片机采用单片机采用单片机采用
    的头像 发表于 06-25 09:21 1231次阅读
    基于<b class='flag-5'>STM32</b><b class='flag-5'>单片机</b>的智能冰箱控制系统设计

    STM32单片机有哪几种常见的开发环境?

    STM32单片机是一款广泛应用于嵌入式系统开发单片机,针对其开发,有以下几种常见的方式:STM32
    的头像 发表于 05-18 08:04 3062次阅读
    <b class='flag-5'>STM32</b><b class='flag-5'>单片机</b>有哪几种常见的<b class='flag-5'>开发</b>环境?

    stm32单片机学习路线

    、函数、指针等。 2.了解电子电路基础 对于单片机开发来说,了解电子电路的基础知识是非常重要的,包括基本的电路原理、电阻、电容、电感等元件的作用和特性。 第二步STM32入门 1.了解
    发表于 05-10 15:34

    STM32单片机最小化系统设计原理

    STM32最小系统,就是能让STM32单片机能够正常工作所必须拥有的组成部分的集合,也是STM32单片机正常运行的必要环境。
    发表于 04-23 14:54 2817次阅读
    <b class='flag-5'>STM32</b><b class='flag-5'>单片机</b>最小化系统设计原理

    【2023电子工程师大会】单片机/RTOS/Linux全栈工程师

    【2023电子工程师大会】单片机/RTOS/Linux全栈工程师修炼之路ppt
    发表于 01-03 16:31 45次下载

    STM32单片机的特点和功能是什么

    STM32单片机是一款基于ARM Cortex-M内核的32位闪存微控制器,由STMicroelectronics公司(意法半导体)生产。STM32单片机具有高性能、低功耗、丰富的外设
    的头像 发表于 01-03 15:33 1.2w次阅读