STM32CUBEMX的freertos一般使用方法笔记

时间:2024-04-14 17:27:12

一、使用STM32CubeMX创建FreeRTOS操作系统
STM32CUBEMX的freertos一般使用方法笔记
STM32CUBEMX的freertos一般使用方法笔记
STM32CUBEMX的freertos一般使用方法笔记STM32CUBEMX的freertos一般使用方法笔记
LED闪烁的配置STM32CUBEMX的freertos一般使用方法笔记
接下来配置时钟,点击生成
STM32CUBEMX的freertos一般使用方法笔记
此处为用户代码编写处;
开启这个选项便可以使用更加精确的延时。
STM32CUBEMX的freertos一般使用方法笔记
在代码区添加
STM32CUBEMX的freertos一般使用方法笔记
便可以!
二、任务挂起和取消挂起
osThreadSuspend(osThreadId thread_id);
//osThreadId thread_id为要挂起任务句柄
osThreadResume(osThreadId thread_id);
//osThreadId thread_id取为要取消任务的句柄
三、消息队列
STM32CUBEMX的freertos一般使用方法笔记
函数:
osMessagePut(myQueue01Handle,ProducerValue,0);//将ProducerValue放入队列myQueue01Handle中
osEvent event;//在接受函数中声明改变量
event = osMessageGet(myQueue01Handle,osWaitForever); //获取队列消息,获取之后并删除
event = osMessagePeek(myQueue01Handle,osWaitForever); //获取之后不删除消息
osMessagePeek函数需要加上这句;否则信号量不对
STM32CUBEMX的freertos一般使用方法笔记四、二进制信号量与连续二进制信号量
STM32CUBEMX的freertos一般使用方法笔记
在需要二进制信号量的任务中将NULL改为信号量句柄STM32CUBEMX的freertos一般使用方法笔记
osSemaphoreRelease(semaphore);
//如果释放信号量成功 osSemaphoreRelease信号量释放函数 信号量+1
osSemaphoreGetCount(semaphore)获取信号量函数
osSemaphoreWait 信号量释放等待函数 osSemaphoreWait(semaphore,0) 信号量-1
//二进制信号量的数值只在 0 1之间
连续二进制信号量
STM32CUBEMX的freertos一般使用方法笔记

STM32CUBEMX的freertos一般使用方法笔记
五、互斥锁与递归互斥锁
STM32CUBEMX的freertos一般使用方法笔记
STM32CUBEMX的freertos一般使用方法笔记
STM32CUBEMX的freertos一般使用方法笔记osMutexWait(myMutex01Handle,osWaitForever); //获得互斥锁信号量函数osMutexWait();
osRecursiveMutexWait(myRecursiveMutex01Handle,osWaitForever);//获得递归互斥锁
osRecursiveMutexRelease(myRecursiveMutex01Handle); //释放递归互斥锁
osMutexRelease(myMutex01Handle); //释放互斥锁信号量函数
使用方法:可以将使用互斥锁的两个任务的优先级暂时提高到同一优先级