STM8L 簡單定時器使用

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++; // 你的處理
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章