1. stm8l152定时器分为高级定时器,通用寄存器,和基本定时器,本实验用的是基本定时器TIM4,时钟频率默认为HSI/8。
2. 本实验设计为利用定时器中断实现led灯的闪烁。
GPIO_Init(LED_GPIO_PORT, LED_GPIO_PINS, GPIO_Mode_Out_PP_High_Slow);
CLK_PeripheralClockConfig(CLK_Peripheral_TIM4, ENABLE);//使能定时器时钟
TIM4_TimeBaseInit(TIM4_Prescaler_16384, 0);//配置定时时间
TIM4_ITConfig(TIM4_IT_Update, ENABLE);//开启定时器中断,从0开始计数,计数到0产生更新事件
TIM4_Cmd(ENABLE);//使能定时器4
enableInterrupts();//使能中断
while (1)//必须要加死循环,从而实现多次中断
{
}
INTERRUPT_HANDLER(TIM4_UPD_OVF_TRG_IRQHandler,25)//定时器中断服务函数
{
/* In order to detect unexpected events during development,
it is recommended to set a breakpoint on the following instruction.
*/
GPIO_ToggleBits(LED_GPIO_PORT, LED_GPIO_PINS);
TIM4_ClearITPendingBit(TIM4_IT_Update);//清除中断标志位
}
3. 定时器4固定设置为向上溢出,计数到设置的值后,就产生更新事件,计数清零。
4. 怎样计算定时时间? 如果定时时间长度达不到要求,可以在多中断几次,在中断服务函数里面设置一个计数,计数到了再执行自定义行为。
http://blog.csdn.net/bagboy_taobao_com/article/details/46918835