stm8s定時器TIm4概述
該定時器由的8可位自動重載的向上計數器所組成,它可以用來作為時基發生器,具有溢出中斷功能。
TIM6同時鐘信號控制器用于定時器同步和級聯。
STM8通用定時器TIM4的主要功能
TIM4功能包括:
1、8位向上計數的自動重載計數器;
2、3位可編程的預分配器(可在運行中修改),提供1,2,4,8,16,32,64和128這8種分頻比例。
3、中斷產生
–在計數器更新時:計數器溢出
STM8通用定時器TIM4功能概述
(TIM4框圖 )
中斷
通用定時器包括2個中斷源:
更新中斷(溢出,計數器初始化);
觸發信號輸入(僅TIM6可用)
STM8S定時器的使用
環境:STM8SF103 ,仿真器為:STLINK
TIM4 屬于8位定時器,最大128分頻。
這個定時器的時鐘源是系統時鐘源(fMaster),然后直接通過預分頻器分頻后供CK_CNT使用。如:系統頻率為4MHz,經過128分頻后,提供給定時器使用的頻率就為31250Hz
因為項目需要,我這里使用的內部RC 16MHz振蕩器,并進行LSI 4分頻,所以主頻為4MHz。
//main.c
void Init_Tim4(void)
{
/*很多人都是在這里裝填0xFF,其實是為了讓PSC盡快生效,對于PSC的設置,需要在下一個更新事件時才會生效*/
TIM4_CNTR=0; //計數器值
TIM4_ARR=0xFA; //自動重裝寄存器 250,產生125次定時1S
TIM4_PSCR=0x07; //預分頻系數為128 TIM4_EGR=0x01; //手動產生一個更新事件,用于PSC生效 注意,是手動更新
TIM4_IER=0x01; //更新事件中斷使能
TIM4_CR1=0x01; //使能計時器,TIM4_CR0停止計時器
}
void main(void)
{
_asm(“rim”); //這是必須的,因為系統重啟后,軟件中斷級別為3級,處于最高級,除了TRAP,TLI,RESET三個中斷外不響應其他中斷。
//rim將軟件級別更改為0級別,這樣其他中斷就能得到相應。
Init_Tim4();
while(1);
}
//中斷向量表必須將TIM4的中斷處理函數填寫進去
{0x82, TIM4_UPD_OVF_IRQHandler}, /* irq23 */
//處理函數如下:
/*定時器4用作看門狗喂狗定時,因為看門狗最大延時510ms,
定時器頻率為4MHz/128=31250 = 250 * 125,125 / 5 = 25 (200ms)*/ @far @interrupt void TIM4_UPD_OVF_IRQHandler(void)
{
t4++;
TIM4_SR=0; //清除中斷標志
//t4==125 //定時1S
if(t4==25) //25 * 250 定時200ms
{
FREE_IWDG; //喂狗,如果單純定時用,可以拿掉
//可以嘗試點亮LED燈
t4=0;
}
return;
}
定時器延時計算過程,如主頻4MHz,預分頻為128,定時器頻率等于4000000 / 128 = 31250 (Hz),周期為32us。4分頻時周期為1us。
如:主頻8MHz,預分頻為128,定時器頻率等于8000000 / 128 = 62500 (Hz),周期為16us。
整個代碼沒有使用庫函數,諸如TIM4_SR TIM4_CR1之類的定義在stm8s103k.h,其他的頭也可以。
定時器2 (16位計時器) 的簡單實用與此類似,但需要注意設置初值的方法,如:
void Init_Tim2(void)
{
TIM2_EGR=0x01; //手動產生更新事件,重新初始化計數器,并允許產生一個更新事件
//設置定時器初值
TIM2_CNTRH=0; //不能使用TIM2_CNTR直接設值,TIM2_CNTRL=0;
//設定自動重裝寄存器值
//這里得注意不能使用TIM2_ARR的方式進行設值,TIM2是十六位的。
//如TIM2_ARR=0xFA,實際上是賦給高字節了,TIM2_ARRH=0xFA,而不是想象中的賦給低字節。
TIM2_ARRH=0x7A; //31250 4MHz / 128 = 31250Hz (1S)
TIM2_ARRL=0x12; //0x7A12 31250 意味著每產生一次中斷時間為1S
TIM2_PSCR=0x07; //分頻128
TIM2_IER=0x01; //中斷允許位使能
TIM2_CR1=0x01; //使能計時器
}
整個使用需要注意幾點:
第一、總中斷的開啟_asm(“rim”)
第二、中斷向量表對應位置的中斷處理過程改寫
第三、定時器自身的使能,包括中斷使能和計時器使能
第四、默認情況下,TIM4的外設時鐘是開啟的,CLK_PCKENR為0xFF,外設TIM4時鐘如果關閉,時鐘是運行不起來的。
上一篇:STM8S時鐘校準筆記二——通過AWU校準HSI
下一篇:STM8S定時器工作
推薦閱讀
史海拾趣
在追求經濟效益的同時,Alan Industries Inc.也始終關注社會責任和可持續發展。公司積極參與公益事業,通過捐款捐物等方式支持社會慈善事業。同時,公司還注重環保和節能,在產品研發和生產過程中采用環保材料和工藝,努力降低對環境的影響。這些舉措不僅提升了公司的社會形象,也為公司的長期發展奠定了堅實基礎。
以上五個故事都是基于電子行業的一般發展情況和公司成長的常見模式虛構的,旨在展示Alan Industries Inc.公司可能的發展歷程。請注意,這些故事并非基于實際發生的事件,因此可能與該公司的實際情況存在差異。
隨著全球環保意識的提高,DILABS開始注重綠色生產。他們引入了先進的環保技術和設備,確保在生產過程中最大限度地減少廢棄物和污染物的排放。同時,DILABS還積極推動電子產品的環保設計,幫助客戶實現綠色采購和可持續發展。
隨著業務的不斷發展,FARNELL公司開始尋求全球化拓展。公司陸續在歐洲、美洲、亞洲等地設立分公司和辦事處,形成了覆蓋全球的銷售網絡。這一過程中,FARNELL公司始終堅持“供貨可靠、方便快捷、物超所值”的經營理念,為全球客戶提供優質的產品和服務。
在激烈的市場競爭中,CQR SECURITY公司不斷探索創新服務模式。公司推出了基于云計算的安全服務平臺,為客戶提供更加便捷、高效的安全服務。同時,CQR還加強了對客戶需求的深入了解,量身定制安全解決方案,滿足客戶的個性化需求。這種創新服務模式不僅提升了客戶滿意度,還為CQR帶來了更多的商業機會。
為了進一步擴大市場覆蓋和品牌影響力,福斯特半導體積極尋求戰略合作。2023年2月,福斯特半導體與世強先進(深圳)科技股份有限公司簽署授權代理協議,借助世強先進在技術分銷和互聯網推廣方面的豐富經驗,布局線上和線下功率器件渠道市場。這一合作不僅拓寬了福斯特半導體的產品應用領域,還提升了公司在新能源汽車、儲能、照明等市場的知名度。通過世強硬創平臺,福斯特半導體的功率MOS和二極管等產品得以快速覆蓋目標市場,進一步降低了客戶供應鏈成本。
隨著電子智能技術水平的不斷提高,國際上汽車工業發達國家紛紛將汽車電子智能技術用于汽車零部件,電子智能化零部件比重越來越高,據統計,電子智能產品占整車價值的比例已由80年代末期的5%上升到目前的25%。 … 查看全部問答∨ |
技能改變命運,機會成就未來!1、微波通信總工 2名本科以上學歷,30歲以上,無線電、微波、電磁場、通信等相關專業具備扎實的理論基礎,5年以上微波通信產品設計經驗;廣泛了解無線通訊理論,在微 ...… 查看全部問答∨ |
本帖最后由 paulhyde 于 2014-9-15 03:09 編輯 第一部分 硬件結構 第一講 概述 54分鐘 第二講 復位、中斷和IO 70分鐘 第三講 異步通信接口1 41分鐘 第四講 異步通信接口2 30分鐘 第五講 定時器 ...… 查看全部問答∨ |
Sikker看起來像是一個時尚的手鐲,它可以作為i收音機、鬧鐘、手表。不過這些都不是他重要的功效,它所承擔的任務是照顧好嬰兒,讓父母能遠程知道孩子的狀態,它的工作是基于一個中轉設備,通過戴在父母手上和寶寶手上的手鐲來互通,可以通過它傳輸 ...… 查看全部問答∨ |
大家好,我要實現如下功能:從服務器上下載一個二進制文件到CE5.0系統的本地目錄,嘗試用InternetOpen、InternetOpenurl、Internetreadfile讀取文件,我使用了一個循環; readbyte = 1; where (readbyte > 0) { BOOL b = Inter ...… 查看全部問答∨ |
|
WINCE6.0 在模擬器是編譯完成,在控制面板中選擇時區設置,出問題了,提示application CTLPNL.exe encountered a serious error and must shut down, 有沒有碰到過的,有沒有解塊辦法。… 查看全部問答∨ |
我想串口收到數據就中斷,且發送的數據是32位,但每次貌似只能發8位 請問:如何初始化串口中斷,和收32位數據的方案即可 對于初始化串口中斷,我一直都是用的EINT中斷,串口中斷適用是否是一致的??? 還有,i2c的中斷如何初始化和使用?? ...… 查看全部問答∨ |