![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
FreeRTOS
文章平均质量分 77
饱饱浪迹天涯
认知扩展与重构
展开
-
【无标题】
FreeRTOS采用拷贝数据传递,也可以传递指针,所以在传递较大的数据的时候采用指针传递。数据入队出队方式:队列通常采用 “先进先出”(FIFO)的数据存储缓冲机制,即先入队的数据会先从队列中被读取,FreeRTOS中也可以配置为 “后进先出”(LIFO) 方式;上锁计数器:当锁住队列的时候,此时还是可以正常读写队列的,只不过操作不了它的等待发送和等待接收这两个列表;队列实际它的内存是分为两部分,第一个就是存放结构体的内存,接着是队列里面的队列项,它用来存放数据的,我们写入数据给队列就写入到队列项里面了。原创 2024-05-30 21:14:31 · 218 阅读 · 0 评论 -
STM32_HAL Freertos按键控制LED
根据电路图,K0为用户按键,连接在PA0引脚,当K0按下时接地,引脚电平低电平。在CubeMX中设置PA0,将IO设置为输入,上拉(上拉外部悬空时,引脚为高电平)。建两个任务,如果的创建这里不解释,请参考任务创建章节。一个任务往队列中写消息,一个任务从队列中读消息。在freertos任务中,添加按键任务,通过myTask_Key不断读入PA0的引脚状态。添加一个消息队列用来给LED任务传递读取的内容。以下是消息队列常用函数。下面创建一个队列深度为16,每个消息单元为uint8_t的消息队列。原创 2024-01-06 11:37:28 · 1015 阅读 · 0 评论 -
并发与竞争
在这种情况下,CPU1的对memory的修改被CPU2的操作覆盖了,因此执行结果是错误的。2、多核系统中,单个的机器指令就不是原子操作,因为多核系统里是多指令流并行运行的,一个核在执行一个指令时,其他核同时执行的指令有可能操作同一块内存区域,从而出现数据竞争现象。多核系统中的原子操作通常使用内存栅障(memory barrier)来实现,即一个CPU核在执行原子操作时,其他CPU核必须停止对内存操作或者不对指定的内存进行操作,这样才能避免数据竞争问题。线程:是进程内的执行单元,共享同一地址空间。原创 2023-12-26 12:28:56 · 1343 阅读 · 0 评论 -
uCOS-III 时间片轮转调度
参考https://blog.csdn.net/baidu_39514357/article/details/122901648。原创 2023-12-05 17:38:27 · 1704 阅读 · 0 评论 -
FreeRTOS任务切换分析
本文是对文章https://freertos.blog.csdn.net/article/details/51418383的一部分摘录与补充。原创 2023-11-28 18:16:05 · 951 阅读 · 0 评论 -
FreeRTOS时间片
在 RTOS 中,最小的时间单位为一个 tick,即 SysTick 的中断周期, RT-Thread 和 μC/OS 可以指定时间片的大小为多个 tick,但是 FreeRTOS 不一样,时间片只能是一个 tick。在SysTick中断函数中并不是直接执行任务切换,而是将xTickCount进行加1操作,xTickCount是FreeRTOS的系统时钟节拍数,具体实现函数则是xTaskIncrementTick(),该函数在中断函数中被调用。FreeRTOS支持时间片的功能。最后返回任务切换信息。原创 2023-12-05 17:23:16 · 1543 阅读 · 0 评论