
RTOS
文章平均质量分 91
hwx1546
这个作者很懒,什么都没留下…
展开
-
RT-Thread PIN设备
PIN设备又叫GPIO设备,是MCU输入输出的一种设备,RT-Thread将GPIO抽象成PIN设备,以实现对GPIO的基本操作。比如上面两个GPIO设备,其中一个作为输出控制LED灯的亮灭,一个作为输入判断按键的高低电平。对于GPIO的操作都有以下几点:设置GPIO的方向,是作为输入还是输出设置GPIO的属性,是上拉,下拉,还是推挽、开漏等设置GPIO的高低电平或者读取GPIO的电平如果需要中断,还需要设置GPIO的中断有些GPIO能复用成其他外设功能,比如ADC、UART等。原创 2024-06-18 18:54:57 · 1121 阅读 · 0 评论 -
STM32F4X UCOSIII 互斥量
假设有一个洗手间,洗手间里面有一把锁,假如现在游客A要进入洗手间,进入洗手间之后把锁锁上了,这时游客B也想进入洗手间,但是因为此时已经有人在洗手间,所以游客B无法进入,所以此时游客B只能在门外等,一直等待游客A上完洗手间之后,把锁打开,游客B才可以进入。在上面的例子中,洗手间是共享资源,洗手间里面的锁是互斥量,游客A和游客B是两个任务。下面来看一下有优先级继承的效果,同样地也是假设系统中有3个任务,分别是低优先级任务L,中优先级任务M和高优先级任务H。:不管该互斥量上是否有挂起的任务,直接删除互斥量。原创 2023-10-07 11:26:35 · 135 阅读 · 0 评论 -
STM32F4X UCOSIII任务消息队列
之前的章节中讲解过消息队列这个机制,UCOSIII除了有内核消息队列之外,还有任务消息队列。在UCOSIII中,每个任务内部都会有一个内嵌消息队列。在大多数情况下,任务消息队列可以代替内核消息队列。原创 2023-09-30 11:33:58 · 269 阅读 · 0 评论 -
STM32F4X UCOSIII任务信号量
之前的章节中讲解过信号量这个机制,UCOSIII除了有内核信号量之外,还有任务信号量。在UCOSIII中,每个任务内部都会有一个32位的内嵌信号量。在大多数情况下,任务信号量可以代替内核信号量。原创 2023-09-28 11:14:26 · 131 阅读 · 0 评论 -
STM32F4X UCOSIII软件定时器
定时器在MCU中是一个很常用的外设,其作用是可以在某个事件点触发MCU中断,告知MCU处理事情。定时器跟生活中的闹钟很类似,可以设置闹钟每天什么时候响,还能设置响的次数,是响一次还是每天都响。定时器也有硬件定时器和软件定时器之分。原创 2023-09-25 19:13:26 · 513 阅读 · 0 评论 -
STM32F4X UCOSIII 事件集
事件在RTOS中也是一种任务间同步的机制,事件不能传递数据。跟信号量不同的是,事件可以实现一对多,多对多的同步,也就是一个事件可以唤醒多个任务,一个任务也可以等待多个事件,也可以是几个事件都发生后才唤醒任务进行事件处理。同样,也可以是多个任务同步多个事件。原创 2023-09-22 11:12:50 · 230 阅读 · 0 评论 -
STM32F4X UCOSIII 信号量
在以往的裸机编程中,如果我们需要判断某个事件是否已经发生,通常会使用一个标志位来进行判断,当事件已经发生时,就将该标志位置1,否则就将该标志位置0。但是有了RTOS之后,我们可以用信号量来代替裸机中的标志位。原创 2023-09-21 14:23:06 · 133 阅读 · 0 评论 -
STM32F4X UCOSIII 消息队列
中断和任务都可以往消息队列里面发送消息,在消息发送之前,消息列队会先判断当前的消息队列列表里面是否已经满,当消息队列还没满的时候,会把要发送的数据放到消息队列的消息列表中,如果当前消息队列的列表已经满,则会返回一个错误代码,同时入队失败。当消息队列不再使用时,可以调用消息队列删除函数,删除消息队列,此时消息队列中的所有数据都会删除,删除后的消息队列不能再次使用。消息队列在创建时,需要用户自定义消息队列可存放的数据个数,当消息队列创建成功时,消息队列的数据存放个数就不能改变。下图画出了消息队列的工作机制。原创 2023-09-20 17:35:26 · 291 阅读 · 3 评论 -
STM32F4X UCOSIII任务
在日常生活中,我们要完成一个问题时,一般都会把一个大问题分解成若干个小问题,当每个小问题依次被解决时,大问题也随之被解决。同样地对于MCU来说也是如此,通常在没有RTOS的情况下,一般我们都会把所有的业务逻辑都放到main函数里面进行解决,但是随着业务逻辑的不断增多,就会发现把所有的业务逻辑都放到main函数里面就会显得特别臃肿,而且实时性也不好。RTOS可以把一个很复杂的业务逻辑分成一个个的任务,每个任务都可以根据自己的事件片进行调度,从而使程序更加简洁,提高实时性。原创 2023-09-19 15:19:12 · 183 阅读 · 0 评论 -
STM32F4X UCOSIII移植
STM32F4X UCOSIII移植什么是uCOSIIISTM32F4X 移植UCOSIIIUCOSIII源代码下载UCOSIII源代码目录结构工程移植添加UCOSIII源码到工程工程添加UCOSIII代码组添加uC-CPU代码添加uC-LIB代码添加uCOSIII代码添加UCOSIII系统时钟添加uCOSIII配置文件和初始化文件修改uCOSIII配置文件和初始化文件总结什么是uCOSIII在刚学习MCU的时候,我们接触到基本上都是些简单的程序,通常所有的业务逻辑都是在main函数里面完成。但是随着后原创 2023-09-15 13:30:40 · 514 阅读 · 0 评论