STM8定時器概述
STM8S提供三種類型的 TIM定時器:高級控制型(TIM1)、通用型(TIM2/TIM3/TIM5)和基本型定時器(TIM4/TIM6)。它們雖有不同功能但都基于共同的架構。此共同的架構使得采用各個定時器來設計應用變得非常容易與方便(相同的寄存器映射,相同的基本功能)。
16位高級控制定時器(TIM1)
● 16位向上、向下、向上/下自動裝載計數器
● 允許在指定數目的計數器周期之后更新定時器寄存器的重復計數器
● 16位可編程(可以實時修改)預分頻器,計數器時鐘頻率的分頻系數為1~65535之間的任意數值
● 同步電路,用于使用外部信號控制定時器以及定時器互聯 (某些型號的芯片沒有定時器互聯功能)
● 多達4個獨立通道可以配置成:
─ 輸入捕獲
─ 輸出比較
─ PWM 生成(邊緣或中間對齊模式)
─ 六步 PWM 輸出
─ 單脈沖模式輸出
─ 三個支持帶互補輸出,并且死區(qū)時間可編程的通道
● 剎車輸入信號可以將定時器輸出信號置于復位狀態(tài)或者一個已知狀態(tài)
● 產生中斷的事件包括:
─ 更新:計數器向上溢出/向下溢出,計數器初始化(通過軟件或者內部/外部觸發(fā))
─ 觸發(fā)事件(計數器啟動、停止、初始化或者由內部/外部觸發(fā)計數)
─ 輸入捕獲
─ 輸出比較
─ 剎車信號輸入
TIM1預分頻器
TIM1的預分頻器基于一個由16位寄存器(TIM1_PSCR)控制的16位計數器。由于這個控制寄存器帶有緩沖器,因此它能夠在運行時被改變。預分頻器可以將計數器的時鐘頻率按1到
65536之間的任意值分頻。
計數器的頻率可以由下式計算:
f CK_CNT = f CK_PSC / (PSCR[15:0] + 1)
向上計數模式
在向上計數模式中,計數器從0計數到用戶定義的比較值(TIMx_ARR寄存器的值),然后重新從0
開始計數并產生一個計數器溢出事件,同時,如果TIM1_CR1寄存器的UDIS位是0,將會產生一
個更新事件(UEV)。
向下計數模式
在向下模式中,計數器從自動裝載的值(TIMx_ARR寄存器的值)開始向下計數到0,然后再從自
動裝載的值重新開始計數,并產生一個計數器向下溢出事件。如果TIM1_CR1寄存器的UDIS位
被清除,還會產生一個更新事件(UEV)。
中央對齊模式( 向上/ 向下計數)
在中央對齊模式,計數器從0開始計數到自動加載的值(TIMx_ARR寄存器)-1,產生一個計數器
溢出事件,然后向下計數到0并且產生一個計數器下溢事件;然后再從0開始重新計數。
定時器TIM1例子
說明:16分頻,向上計數,1000次=1毫秒 觸發(fā)一次中斷
TIM1_TimeBaseInit(15,TIM1_COUNTERMODE_UP,1000,0);
TIM1_ARRPreloadConfig(ENABLE);//使能自動重裝
TIM1_ITConfig(TIM1_IT_UPDATE , ENABLE);//數據更新中斷
TIM1_Cmd(ENABLE);//開定時器
INTERRUPT_HANDLER(TIM1_UPD_OVF_TRG_BRK_IRQHandler, 11)
{
TIM1_ClearITPendingBit(TIM1_IT_UPDATE);
}
單片機源程序如下:
- /***********************************************************************
- * 說 明: STM8定時器
- * 開發(fā)平臺: 劍齒虎STM8開發(fā)板
- * 作 者: 劉洋 張殿東
- * 版 本: V1.0
- *
- * IAR開發(fā)環(huán)境 版本 V2.20.1
- * ST庫函數 版本 V2.2.0
- ***********************************************************************/
- #include "pbdata.h"//引入自定義公共頭文件
- void BSP_Configuration(void);//硬件初始化函數聲明
- /***********************************************************************
- * 函 數 名: main
- * 功能說明: c程序入口
- * 形 參:無
- * 返 回 值: 錯誤代碼(無需處理)
- ***********************************************************************/
- int main(void)
- {
- BSP_Configuration();//硬件驅動初始化函數
-
- while(1)//主程序循環(huán),反復執(zhí)行循環(huán)體里的語句
- {
- //LED_Demo1();//在主程序中調用LED_Demo1()函數
- //LED_Demo2();//在主程序中調用LED_Demo2()函數
- }
- }
- /***********************************************************************
- * 函 數 名: BSP_Configuration
- * 功能說明: 初始化硬件設備。只需要調用一次。該函數配置CPU寄存器和外設的寄存器并初始化一些全局變量。
- * 形 參:無
- * 返 回 值: 無
- ***********************************************************************/
- void BSP_Configuration(void)
- {
- CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);//時鐘速度為內部16M,1分頻,
- LED_Init();//調用LED初始化函數
- Tim1_Init();
- rim();//打開總中斷
- }
- /*斷言函數:它的作用是在編程的過程中為程序提供參數檢查*/
- #ifdef USE_FULL_ASSERT
- void assert_failed(u8* file,u32 line)
- {
- while(1)
- {
- }
- }
- #endif
復制代碼
所有資料51hei提供下載:
【眾拳】劍齒虎STM8開發(fā)板的程序下載:
STM8定時器程序.zip
(999.64 KB, 下載次數: 206)
2017-12-9 11:58 上傳
點擊文件名下載附件
|