FreeRTOS软件定时器
2018-02-28 18:26
411 查看
API函数
举例
实验现象
//创建 TimerHandle_t xTimerCreate( const char * const pcTimerName, const TickType_t xTimerPeriodInTicks, const UBaseType_t uxAutoReload, void * const pvTimerID, TimerCallbackFunction_t pxCallbackFunction ) //开始 #define xTimerStart( xTimer, xTicksToWait ) xTimerGenericCommand( ( xTimer ), tmrCOMMAND_START, ( xTaskGetTickCount() ), NULL, ( xTicksToWait ) ) BaseType_t xTimerGenericCommand( TimerHandle_t xTimer, const BaseType_t xCommandID, const TickType_t xOptionalValue, BaseType_t * const pxHigherPriorityTaskWoken, const TickType_t xTicksToWait ) //停止 #define xTimerStop( xTimer, xTicksToWait ) xTimerGenericCommand( ( xTimer ), tmrCOMMAND_STOP, 0U, NULL, ( xTicksToWait ) )
举例
void start_task(void *pvParameters) { //创建软件周期定时器。周期1s(1000个时钟节拍),周期模式 AutoReloadTimer_Handle=xTimerCreate((const char* )"AutoReloadTimer", (TickType_t )1000, (UBaseType_t )pdTRUE, (void* )1, (TimerCallbackFunction_t)AutoReloadCallback); //创建单次定时器。周期2s(2000个时钟节拍),单次模式 OneShotTimer_Handle=xTimerCreate((const char* )"OneShotTimer", (TickType_t )2000, (UBaseType_t )pdFALSE, (void* )2, (TimerCallbackFunction_t)OneShotCallback); } //周期定时器的回调函数 void AutoReloadCallback(TimerHandle_t xTimer) { static u8 tmr1_num=0; tmr1_num++; //周期定时器执行次数加1 printf("AutoReloadCallback %d\r\n", tmr1_num); } //单次定时器的回调函数 void OneShotCallback(TimerHandle_t xTimer) { static u8 tmr2_num = 0; tmr2_num++; //单次定时器执行次数加1 printf("OneShotCallback %d\r\n", tmr2_num); } void timercontrol_task(void *pvParameters) { while(1) { key = KEY_Scan(0); switch(key) { case WKUP_PRES: //当key_up按下的话打开周期定时器 xTimerStart(AutoReloadTimer_Handle,0); //开启周期定时器 printf("开启定时器1\r\n"); break; case KEY0_PRES: //当key0按下的话打开单次定时器 xTimerStart(OneShotTimer_Handle,0); //开启单次定时器 printf("开启定时器2\r\n"); break; case KEY1_PRES: //当key1按下话就关闭定时器 xTimerStop(AutoReloadTimer_Handle,0); //关闭周期定时器 xTimerStop(OneShotTimer_Handle,0); //关闭单次定时器 printf("关闭定时器1和2\r\n"); break; } vTaskDelay(10); //延时10ms,也就是10个时钟节拍 } }
实验现象
相关文章推荐
- FreeRTOS 学习六:软件定时器
- FreeRTOS软件定时器xTimerCreate
- FreeRTOS学习6--软件定时器
- FreeRtos软件定时器相关API函数
- FreeRTOS 软件定时器的使用
- 定时器的使用(学习计时器软件开发…
- 51单片机自定义多个软件定时器
- 嵌入式系统学习——STM32之UCOS-III中断和时间管理及软件定时器
- BLE-NRF51822教程8-软件定时器的使用
- 【iCore4 双核心板_uC/OS-II】例程四:软件定时器
- 单片机软件定时器的使用方法
- BLE-NRF51822教程8-软件定时器的使用
- 嵌入式软件之定时器的设计
- 详解μC/OS-II软件定时器入门使用方法
- ucos ii 软件定时器,delay函数
- μC/OS-II软件定时器的分析与测试
- 软件定时器
- STM32软件定时器的设计
- Raw-OS源码分析之软件定时器
- Esp8266学习之旅③ 利用 " 软件定时器 "或“硬件定时器” 定时0.5秒闪烁点亮一盏LED。(附带demo)