(一)定时器介绍
指出定时器可以组合使用也可以单独使用,分频是1/16/256,可以产生中断,三种计数模式,时钟源是MCLK,也就是CPU时钟。
(二)定时器编程
(1)查看示例
这部分指明了现象;
然后纵观整个程序,主要是通过中断触发定时器来使LED亮1s
(2)配置自己的函数
第一步 配置定时器
配置定时器Timer32:
Timer32_initModule(TIMER32_BASE, TIMER32_PRESCALER_1, TIMER32_32BIT,
TIMER32_PERIODIC_MODE);
Interrupt_enableInterrupt(INT_T32_INT1);
Interrupt_enableMaster();
Timer32_setCount(TIMER32_BASE,480000);
Timer32_enableInterrupt(TIMER32_BASE);
Timer32_startTimer(TIMER32_BASE, true);
第二步 配置中断函数:
uint32 Timer32_Cnt = 0;
void T32_INT1_IRQHandler(void)
{
Timer32_clearInterruptFlag(TIMER32_BASE);
Timer32_Cnt +=10;
if(Timer32_Cnt == 100)
{
Timer32_Cnt = 0;
LED_TOGGLE;
}
Timer32_setCount(TIMER32_BASE,480000);
Timer32_startTimer(TIMER32_BASE, true);
}
第三步 编译烧写
直接编译即可;
可以看到LED以200ms速度闪烁,程序就写好了!
(三)杂谈心得
在MCU跑裸机是非常常见的方式,这种方法非常简易而且容易上手,效率也比轮询高一些,但是相较于操作系统还差一些,这种方式主要通过定时器来定时进入中断来构造一个高于while层面的程序执行部分,也叫前后台系统,适用于adc,数据传输,时间统计等等,一般在使用timer不紧张的MCU时都会使用这种方式来写程序。
|