![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
FreeRTOS
文章平均质量分 67
老马他舅舅
好想躺平。
展开
-
CUBEMX建立freeRTOS工程编译报错
CUBEMX建立freeRTOS工程编译报错原创 2023-04-21 11:23:59 · 1744 阅读 · 9 评论 -
STM32CubeMX在freeRTOS中使用printf函数
在usart.h中添加#inlcude "stdio.h"以上三部完成后就可以使用printf函数了。在usart.c中添加入下代码。原创 2022-08-09 15:46:44 · 744 阅读 · 3 评论 -
阿里云上安装MQTT服务器
在云服务器上安装EMQX,MQTTX通信原创 2022-07-28 21:12:57 · 1619 阅读 · 0 评论 -
八、FreeRTOS 软件定时器
软件定时器类似于单片机的定时中断,但是精度和优先级不如硬件定时器。支持单次模式(只执行一次)和周期模式。精度为x个tick注意事项xTimerCreate() 软件定时器创建函数xTimerStart()软件定时器启动函数软件定时器在创建完成的时候是处于休眠状态的,需要用 FreeRTOS 的相关函数将软件定时器活动起来,而 xTimerStart()函数就是可以让处于休眠的定时器开始工作。xTimerStop()软件定时器停止函数xTimerStop() 用于停止一个已经启动的软件定时器, 该函数的原创 2022-06-19 13:35:29 · 2556 阅读 · 0 评论 -
七、FreeRTOS事件和常用函数接口
事件是一种实现任务间通信的机制,主要用于实现多任务间的同步,但事件通信只能是事件类型的通信,无数据传输。与信号量不同的是,它可以实现一对多,多对多的同步。即一个任务可以等待多个事件的发生:可以是任意一个事件发生时唤醒任务进行事件处理;也可以是几个事件都发生后才唤醒任务进行事件处理。同样,也可以是多个任务同步多个事件。每一个事件组只需要很少的 RAM 空间来保存事件组的状态。 事件组存储在一个EventBits_t 类 型 的 变 量 中 , 该 变 量 在 事 件 组 结 构 体 中 定 义 。 如 果原创 2022-06-19 10:53:59 · 720 阅读 · 0 评论 -
六、FreeRTOS互斥信号量和函数接口讲解
互斥信号量是一种特殊的二值信号量,它和信号量不同的是,它支持互斥量所有权、递归访问以及防止优先级翻转的特性。任意时刻互斥量的状态只有两种,开锁或闭锁。当互斥量被任务持有时,该互斥量处于闭锁状态,这个任务获得互斥量的所有权。当该任务释放这个互斥量时,该互斥量处于开锁状态, 任务失去该互斥量的所有权。当一个任务持有互斥量时,其他任务将不能再对该互斥量进行开锁或持有。 持有该互斥量的任务也能够再次获得这个锁而不被挂起,这就是递归访问,也就是递归互斥量的特性,这个特性与一般的信号量有很大的不同,在信号量中,由于已经原创 2022-06-08 15:37:28 · 737 阅读 · 0 评论 -
五、FreeRTOS信号量和常用信号量接口
信号量(Semaphore)是一种实现任务间通信的机制,可以实现任务之间同步或临界资源的互斥访问, 常用于协助一组相互竞争的任务来访问临界资源。在多任务系统中,各任务之间需要同步或互斥实现临界资源的保护,信号量功能可以为用户提供这方面的支持。抽象的来讲,信号量是一个非负整数,所有获取它的任务都会将该整数减一( 获取它当然是为了使用资源),当该整数值为零时,所有试图获取它的任务都将处于阻塞状态。通常一个信号量的计数值用于对应有效的资源数,表示剩下的可被占用的互斥资源数。其值的含义分两种情况: 0: 表示没原创 2022-06-08 12:56:28 · 687 阅读 · 0 评论 -
四、FreeRTOS消息队列和常用函数
队列又称消息队列,是一种常用于任务间通信的数据结构。队列可以在任务与任务间、中断和任务间传递信息,实现了任务接收来自其他任务或中断的不固定长度的消息,任务能够从队列里面读取消息,当队列中的消息是空时,读取消息的任务将被阻塞,用户还可以指定阻塞的任务时间 xTicksToWait,在这段时间中,如果队列为空,该任务将保持阻塞状态以等待队列数据有效。 当队列中有新消息时, 被阻塞的任务会被唤醒并处理新消息;当等待的时间超过了指定的阻塞时间,即使队列中尚无有效数据,任务也会自动从阻塞态转为就绪态。 消息队列是一种原创 2022-06-07 14:20:08 · 1373 阅读 · 0 评论 -
三、FreeRTOS任务管理--常用函数
FreeRTOS 的任务可认为是一系列独立任务的集合。每个任务在自己的环境中运行。在任何时刻,只有一个任务得到运行, FreeRTOS 调度器决定运行哪个任务。调度器会不断的启动、停止每一个任务,宏观看上去所有的任务都在同时在执行。作为任务,不需要对调度器的活动有所了解,在任务切入切出时保存上下文环境(寄存器值、堆栈内容)是调度器主要的职责。为了实现这点,每个 FreeRTOS 任务都需要有自己的栈空间。当任务切出时,它的执行环境会被保存在该任务的栈空间中,这样当任务再次运行时,就能从堆栈中正确的恢复上次的原创 2022-06-06 17:23:31 · 586 阅读 · 0 评论 -
二、FreeRTOS动态创建任务
FreeRTOS常用动态任务创建。FreeRTOS 做法是在 SRAM 里面定义一个大数组,也就是堆内存,供 FreeRTOS 的动态内存分配函数使用,在第一次使用的时候,系统会将定义的堆内存进行初始化,这些代码在 FreeRTOS 提供的内存管理方案中实现(heap_1.c、heap_2.c、 heap_4.c 等)在使用动态创建任务时必须关闭宏定义 configSUPPORT_STATIC_ALLOCATION同时打开宏定义 configSUPPORT_DYNAMIC_ALLOCATION动态任务原创 2022-06-06 15:25:02 · 634 阅读 · 0 评论 -
一、FreeRTOS v9移植stm32f103zet6(野火霸道)
一下载FreeRTOS源码 https://sourceforge.net/projects/freertos/files/FreeRTOS/在裸机工程模板的根目录下建立文件夹FreeRTOS 在FreeRTOS文件下下建立src port文件夹将FreeRTOSv9.0.0\FreeRTOS\Source中的所有.c文件复制到src文件夹 打开 FreeRTOS V9.0.0 源码,在“FreeRTOSv9.0.0\FreeRTOS\Source\portable”目录下找到“ MemMang”文件夹与原创 2022-06-06 13:23:04 · 830 阅读 · 0 评论