自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(4)
  • 收藏
  • 关注

原创 基于源码详谈FreeRTOS机制之互斥量

假设我们有ABC三个任务,优先级由低到高,当A执行时获得信号量,此时B也需要执行,因为B的优先级比A高,所以B会抢占A先执行,突然来了个优先级比B高的C,且要和A获取到同一个信号量,但假设任务B一直在允许,导致A无法运行然后释放信号量,也导致优先级比B高的C无法运行,此时就违背了优先级高的先运行的原则,这时候互斥量的作用就体现出来了,它可以来解决这个问题。高优先级的任务,被低优先级的任务延迟,这被称为"优先级反转。高优先级的任务把自身的优先级赋值给低优先级,这叫优先级继承。

2024-03-25 00:53:56 300

原创 基于源码详谈FreeRTOS机制之信号量

有这么个场景,在一个停车场中有7个空位,但是进来停车的人不知道还有没有空位(count=?),这时候就应该有个数据来告诉他有没有空位,信号量就这么个东西,它用来表示资源的个数,它的本质上就是个计数器。当车进来时,空位减少一个 count--,当减到0时就不可以进车了,当有车出去时才可以进来。

2024-03-25 00:31:39 136

原创 基于源码详谈FreeRTOS机制之队列

我们假设有这么一段代码这段代码运行结果如图:从代码可以看出运行结果和我们想要的结果相当。这段代码运行的本质是这样的:首先寄存器会去读a的值并复制给R0,然后再进行加法操作,即R0=R0+1 ,最后再计算出的R0的值重新赋值给a,调用一次aa函数后a的值为1,再次调用bb后a的值为2。

2024-03-24 23:51:50 1527

原创 基于源码详谈FreeRTOS内部机制之任务

我们常认为,C语言程序的核心是函数和变量。我们常说创建一个变量、创建一个函数,就是创建一个任务了吗?并不是。变量只是一个名字,我们无法单纯依靠变量去做任何事;函数是看到名字就能够知道是有什么作用、有什么功能的东西,它保存在flash上,在flash上的函数无需再次保存。函数和变量都是静态的,而任务应该是运行起来的函数,因为任务不仅仅包含函数和变量,还包含着它们运行所需要的环境。当任务在运行的时候,现在暂停了,但是未退出,我们为了让他下次重新运行的时候需要做些什么?

2024-03-17 23:22:09 1673

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除