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++; // 你的處理
}