定时器是是灰常有用滴,我们回想一下当初玩51的时候,很多时候都是定时/计数,然后进中断,定时/计数,然后进中断。。。。。。
好,那么这块FireBLE如何用定时器呢?我们使用定时器把蓝色LED闪烁。
首先,当然是配置IO口,每个都一样,所以这里不贴图了。(贴图真麻烦啊,嘿嘿)
进入int main()函数,我们一一解读:
1.当然是SystemInit();把系统初始化了先;
2. gpio_init(NULL);
gpio_set_direc
tion_field(GPIO_P27, GPIO_OUTPUT);
gpio_write_pin_field(GPIO_P27, GPIO_HIGH);
这里是初始化gpio,让P2.7口初始状态输出高电平
3.timer_init(QN_TIMER0, led0_link);
timer_config(QN_TIMER0, TIMER_PSCAL_DIV, TIMER_COUNT_MS(1000, TIMER_PSCAL_DIV));
timer_enable(QN_TIMER0, MASK_ENABLE);
配置定时器,包括初始化、寄存器配置、使能,然后。。。。
4.while (1) ;
死循环。。。。等待进中断
5.那中断函数呢?当然有啦,在timer初始化的时候我们已经定义好中断函数了,没错,就是led0_link,再中断函数中加个IO口的高低变化就能实现蓝色LED的闪烁啦。
void led0_link(void)
{
gpio_toggle_pin(GPIO_P27);
}
没了?这下真的没了。但是这里多说一句。。。。例程中的那个进中断LED亮灭,我是真看不出来闪烁了,延时时间太短。。。。我又不是网球王子里的人物。。。。