STM8L中有多个定时器,TIM1最高级,其他都是普通定时器,一般情况下也够用。
最简单的示例
初始化
// TIM3时钟使能
CLK_PeripheralClockConfig(CLK_Peripheral_TIM3, ENABLE);
// 默认初始化
TIM3_DeInit();
// 最主要处理:设置计数(延时时间)
// STM8上电后的默认时钟是HSI的8分频,也就是16M/8=2M
// 在此频率下,再次设置2分频(TIM3_Prescaler_2)
// 向上溢出计数为1000,可知实际触发时间为 (1/2M)*2*1000=1ms
/* (1/2MHz)*2*1000 = 1ms */
TIM3_TimeBaseInit(TIM3_Prescaler_2, TIM3_CounterMode_Up, 1000);
// 定时溢出中断
TIM3_ITConfig(TIM3_IT_Update, ENABLE);
// 自动加载
TIM3_ARRPreloadConfig(ENABLE);
// 初始计数
TIM3_SetCounter(0);
// 中断优先级
ITC_SetSoftwarePriority(TIM3_UPD_OVF_TRG_BRK_USART3_TX_IRQn , ITC_PriorityLevel_2);
// 使能
TIM3_Cmd(ENABLE);
中断处理
INTERRUPT_HANDLER(TIM3_UPD_OVF_TRG_BRK_USART3_TX_IRQHandler, 21)
{
// 清中断
TIM3_ClearITPendingBit(TIM3_IT_Update);
count++; // 你的处理
}