OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 2213|回复: 0

FreeRTOS: 定时器使用笔记

[复制链接]

44

主题

187

帖子

0

精华

高级会员

Rank: 4

积分
566
金钱
566
注册时间
2016-9-28
在线时间
158 小时
发表于 2018-8-31 06:48:20 | 显示全部楼层 |阅读模式
定义参数:
#define TIMER_ID            1
static xTimerHandle xTimers;

static void vTimerCallback( xTimerHandle pxTimer )


1. 创建定时器,是否要在创建之后启动定时器,可根据实现功能需要选择。 但启动定时器之前,必须创建定时器
static void AppTask_CreateTimer (void)
{
    uint8_t x;

    const TickType_t xTimerPeriodInTicks = 1000;
    /* 创建定时器,如果在RTOS调度开始前初始化定时器,那么系统启动后将立即开始工作 */

     xTimers = xTimerCreate(  "Timer",             /* 定时器名字 */
                              xTimerPeriodInTicks, /* 定时器周期 The timer period in ticks. */
                              pdTRUE,              /* 周期性  */
                              ( void * ) TIMER_ID, /* 定时器ID */
                              vTimerCallback       /* 定时器回调函数 */
                           );


     if( xTimers == NULL )
     {
        printf( "定时器没有创建成功 \r\n");
     }
}


2. 启动定时器
static void AppTask_StartTimer( void )
{
    if( xTimerStart( xTimers, 0 ) != pdPASS )
    {
        printf( "start time: fail \r\n");
    }   
}


3. 停止定时器
static void AppTask_StopTimer( void )
{
    if( xTimerStop( xTimers, 0 ) != pdPASS )
    {
        printf( "stop time: fail \r\n");
    }   
}


4. 定时callback函数
static void vTimerCallback( xTimerHandle pxTimer )
{
    long lArrayIndex;

    configASSERT( pxTimer );

    /* 获取定时器ID  */
    lArrayIndex = ( long ) pvTimerGetTimerID( pxTimer );
    if( lArrayIndex == TIMER_ID )
    {
          printf(" Timer is running \r\n");
    }   
}


正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-19 14:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表