zoukankan      html  css  js  c++  java
  • FreeRTOS API使用栗子

    二值信号量

    1. 创建句柄
    2. 创建信号量
    3. 等待获取信号量
    4. 释放信号量
    SemaphoreHandle_t BinaryStartSemaphore;	//创建二值信号量句柄
    BinaryStartSemaphore = xSemaphoreCreateBinary();//创建信号量
    
    void Control_Task(void)
    {
    	while(1)
    	{
    		if(条件)
    		xSemaphoreGive(BinaryStartSemaphore);//释放信号量
    	}
    }
    
    void task01(void)
    {
    	while(1)
    	{
    		xSemaphoreTake(BinaryStartSemaphore,portMAX_DELAY);	//获取开始信号量
    		/*do something*/
    	}
    }
    

    软件定时器:

    #define NUM_TIMERS 1//同时定义多个
    
    TimerHandle_t xTimers_Handle[ NUM_TIMERS ];     //创建软件定时器句柄
    
    xTimers_Handle[0]    = xTimerCreate((const char*            )"xTimer0",//创建软件定时器
                                            (TickType_t             )1000,//定时时间,1000个时钟周期
                                            (UBaseType_t            )pdTRUE,//周期触发
                                            ( void *                )0,
                                            (TimerCallbackFunction_t)TreatTime_Count);//回调函数
    if(条件)
    {
    	xTimerStart(xTimers_Handle[0],0);   //开启周期定时器,治疗时间到计数
    }
    
    if(条件)
    {
    	xTimerStop(xTimers_Handle[0],0);        //关闭单次定时器,关闭治疗时间到计数
    }
    
    void TreatTime_Count(void *pvParameters)
    {
    	//do something...
    }
    
  • 相关阅读:
    Webpack打包原理
    Vue——VNode
    Vue——响应式原理
    HTTP2.0——头部压缩
    HTTP2.0
    浏览器打开2个页面会有几个进程?
    计算机网络——TCP如何保证可靠性
    操作系统——进程之间的通信
    前端路由hash与history下
    前端路由hash与history上
  • 原文地址:https://www.cnblogs.com/hhsxy/p/14018357.html
Copyright © 2011-2022 走看看