当前位置:首页 > STM32CubeMX+FreeRTOS学习[2] 二值信号量(Lu)
FreeRTOS学习之二:二值信号量
前提:默认已经装好MDK V5和STM32CubeMX,并安装了STM32F1xx系列的支持包。 硬件平台:STM32F1xx系列。
目的:学习使用二值信号量进行任务同步。
二值信号量主要用于任务的同步。本文例子使用STM32CubeMX配置创建两个任务,一个任务每秒钟发送一次信号量,另一个等待信号量并控制LED的输出状态。
Step1.打开STM32CubeMX,点击“New Project”,选择芯片型号,STM32F103RBTx。
Step2.配置时钟引脚。
Step3.配置PA8和PD2为Output,并把用户标签分别改为LED0,LED1。
Step4.将系统时基源改为TIM4。
Step5.使能FreeRTOS。
Step6.配置时钟树。8M输入时,通过PLL得到72M内部时钟。
Step7.配置FreeRTOS。
在Tasks and Queues选项卡中,默认配置了一个名为defaultTask的任务,其优先级为普通,任务堆栈大小为128字,任务函数名为StartDefaultTask。
双击蓝色的地方,弹出对话框,将任务名修改为Periodic,将任务函数名修改为PeriodicTask。
点击Add按钮,增加一个任务Handle,优先级设置为Normal,函数名为HandleTask。
在Timers and Semaphores选项卡,点击Binary Semaphores项右边的“Add”按钮,添加一个信号量,名称改为bSem01。
注:该步骤中,除了添加任务和信号量,其他的都使用默认参数。 Step8.生成代码。
等完成后直接打开工程。
工程基本组织结构如下图,其中Application/User组中的文件是用户可以修改的,而其他组中的文件一般不进行修改。
共分享92篇相关文档