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