RTT入门(软件定时器)

学习记录 23.2.20

api函数

  • rt_timer_create("timer1" , timerout1 , RT_NULL, 100 , RT_TIMER_FLAG_PERIODIC)

  • timer1:定时器名称(8个字符内)

  • timerout1:时间到了之后执行的函数

  • RT_NULL:不传递参数

  • 100:定时器超时时间为100个系统tick,系统周期为1ms,100表示100ms

  • RT_TIMER_FLAG_PERIODIC:周期运行(相反的是只运行一次 )

  • rt_timer_start();

  • rt_timer_stop();

  • rt_timer_delete();

例程

//main.c

//创建软件定时器
int timer_example(void){
    //创建定时器,周期=100tick
    timer1 = rt_timer_create("timer1",timerout1,RT_NULL,100,RT_TIMER_FLAG_PERIODIC);

    if(timer1!=RT_NULL){
        rt_timer_start(timer1);//启动定时器
    }
    return 0;
}


//定时器到时间后执行的函数(定时器超时函数)
void timerout1(void *parameter){
    static rt_uint8_t count = 0;
    rt_kprintf("timerout!!!\n");    //超时输出

    //执行10次后,停止并删除此定时器
    if(count++ > 10){
        rt_timer_stop(timer1);
        rt_timer_delete(timer1);
    }
}

//函数声明
void timerout1 (void *parameter);
int timer_example (void);

// 使用INIT_APP_EXPORT宏自动初始化,也可以通过在其他线程内调用timer_example函数进行初始化
INIT_APP_EXPORT(timer_example);

int main(void)
{
    gpio_init(B13, GPO, 0, GPO_PUSH_PULL);    //逐飞的库,用什么初始化io都行

    while(1)
    {
        rt_thread_mdelay(100);
        gpio_toggle(B13);                      //逐飞库
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值