电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

STM32CubeMX+FreeRTOS学习二值信号量(Lu)VIP免费

STM32CubeMX+FreeRTOS学习二值信号量(Lu)_第1页
1/7
STM32CubeMX+FreeRTOS学习二值信号量(Lu)_第2页
2/7
STM32CubeMX+FreeRTOS学习二值信号量(Lu)_第3页
3/7
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 组中的文件是用户可以修改的,而其他组中的文件一般不进行修改。 Step9.分析程序结构。 在进入 main 函数之前,先定义了几个变量,声明了几个函数。 再看 main 函数。将 main 函数整理,删除很多注释之后,得到下图所示内容。 其中第①部分,是硬件配置;第②部分,创建一个信号量和两个任务;第③部分,启动调度器。 启动调度器后,程序就由 FreeRTOS 的调度器管理了,后面的 while(1)是不会执行到的。 Step10.添加代码。 在 main.c 文件中,找到前面配置添加的两个任务函数,并在其中分别添加代码。 PeriodicTask 的功能是,每 1 秒钟发送一次信号量。 HandleTask 的功能的,等待信号量,然后翻转 LED0 和 LED1 的输出状态。 Step11.编译下载运行。LED0 和 LED1 分别闪烁,周期都是 2 秒。 程序分析: 1.分析语句:osSemaphoreDef(bSem01); 和 osThreadDef(…)类似,osSemaphoreDef(…)并不是一个函数,而是一个宏。 其...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

STM32CubeMX+FreeRTOS学习二值信号量(Lu)

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部