学习记录 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); //逐飞库
}
}