FreeRTOS
分享使用FreeRTOS中的注意事项,以及一些疑点难点。
Do Always Learning
按部就班就是伟大,加油!
展开
-
计算FreeRTOS剩余堆空间
FreeRTOS占用内存Freeconfig.h 中 宏定义宏 #define configTOTAL_HEAP_SIZE ( ( size_t ) ( 30 * 1024 ) ) 该宏所定义的内存空间属于ZI-data范围(ZI-data 是指未初始化的全局变量及初始化值为0的全局变量)FreeRTOS 自带的 申请内存API pvPortMalloc 是从configTOTAL_HEAP_SIZE所定义的内存中去申请;<stdio.h> 文件中的malloc 函数原创 2020-08-15 22:00:39 · 3427 阅读 · 0 评论 -
FreeRTOS任务管理、任务状态、任务优先级
任务状态运行态任务分为运行态和非运行态两种,在处理器运行过程中,任一时刻只能有一个任务处于运行态,非运行态又包含很多子态。当任务处于非运行态时,任务处于休眠态(dormant),它的状态被保存,以便下一次调度程序决定它应该进入运行态。当一个任务恢复执行时,它从最后一次离开运行态之前将要执行的指令开始执行。FreeRTOS调度器是唯一可以切换任务状态的实体。非运行态阻塞态等待事件的任务处于阻塞态,任务会因等待两种不同的事件进入阻塞态时间相关事件-此类事件要么是一个延时的相对时间,要么是一个原创 2020-08-06 20:18:33 · 1972 阅读 · 0 评论 -
FreeRTOS延时函数
vTaskDelay() 相对延时函数vTaskDelay()延时固定数量的tick中断,将调用任务置于阻塞状态。(vTaskDelay() 函数只有在宏 INCLUDE_vTaskDelay 置1时才可用)void vTaskDelay( TickType_t xTicksToDelay );**参数作用:**如果一个任务调用函数vTaskDelay(100),此时滴答中断计数为10000,然后它将立即进入阻塞状态,并保持阻塞状态直到滴答中断计数达到10100宏pdMS_TO_TICKS()原创 2020-08-06 20:17:08 · 7852 阅读 · 0 评论 -
FreeRTOS消息队列应用
读队列时阻塞发送消息至队列的任务的优先级低于从队列接收消息的任务的优先级,这意味着队列项数永远不会超过一项,一旦有数据发送至队列,接收消息的任务就会解锁,抢占发送任务然后移除队列中的消息,是队列内容再次为空。QueueHandle_t xQueue; //声明消息队列//发送任务static void vSenderTask(void *pvParameters){ int valuetosend; BaseType_t xStatus; const TickType_原创 2020-08-01 08:49:20 · 922 阅读 · 0 评论 -
FreeRTOS中断和优先级MSB对齐
中断和中断配置中断优先级定义MSB对齐移植LSB对齐移植中断STM23优先级使用4位,优先级分组(0 1 2 3 4),在FreeRTOS使用中,STM32使用优先级分组4,都是抢占优先级,优先级数为16个,最低优先级为15configMAX_SYSCALL_INTERRUPT_PRIORITY // 此宏用来设置在中断服务程序安全调用FreeRTOS API函数的最高中断优先级configKERNEL_INTERRUPT_PRIORITY //此宏用于设置RTOS内核中断优先级原创 2020-07-27 10:13:03 · 891 阅读 · 1 评论 -
FreeRTOS消息队列 传递结构体指针和结构体异同
消息队列传递传递结构体指针和结构体异同使用队列传递复合数据类型接收方接收由多个发送源发送至队列中的消息时,需要判断数据的来源,使用方式:利用队列传递结构体,在结构体中包含数据值和数据来源信息。typedef struct{ int iValue; //数据值 int iMeaning; //数据来源信息}xData;利用队列传递数据的指针(处理速度更快)指针指向的内存空间所有权必须明确共享内存在其指针发送到队列之前,其内容只允许被发送任务访问;共享内存指针原创 2020-07-22 21:11:39 · 4291 阅读 · 1 评论