基于uCOS-II系统的stm32物联网套件(温湿度传感器)开发—— 使用计数型信号量解决任务之间的同步
实现功能
- 建立一个任务,它每5 秒发送一次信号量;
- 编写Led任务,使其每过1s尝试获得信号量,如果有,则翻转一次LED。
程序分析
main.c
#include "includes.h"
static OS_STK Post_task_stk[TASK_STK_SIZE]; //定义信号发送任务栈
static OS_STK Led_task_stk[TASK_STK_SIZE]; //定义LED灯任务栈
OS_EVENT *Led_Semp; //定义Led信号量的事件控制块指针
int main(void)
{
BSP_Init(); //初始化uCOS-II系统的板上时钟
OSInit(); //uCOS-II系统初始化
Led_Semp = OSSemCreate(0); //创建计数型信号量
OSTaskCreate(Task_Post,(void *)0,
&Post_task_stk[TASK_STK_SIZE-1], Post_TASK_PRIO); //创建发送信号量任务
OSTaskCreate(Task_Led,(void *)0, //创建Led处理函数
&Led_task_stk[TASK_STK_SIZE-1]