|
STM32有多個(gè)定時(shí)器可供使用,且有多種使用方式,包括普通定時(shí)、PWM輸出、輸入捕獲、觸發(fā)ADC等。本篇文章主要介紹普通定時(shí)中斷的使用。前期準(zhǔn)備: STM32硬件電路板及仿真器(以STM32F072C8單片機(jī)為例) Keil v5以上版本(MDK-ARM)
首先新建工程后,配置系統(tǒng)時(shí)鐘為48MHz(參考上一篇GPIO使用中的配置步驟)。以TIM1為例,使能TIM1的時(shí)鐘源為Internal Clock(即48MHz系統(tǒng)時(shí)鐘),設(shè)置定時(shí)器的周期、分頻系數(shù)等。假設(shè)定時(shí)周期為100ms,則設(shè)置參數(shù)如下圖。
nthuqd2gflp64048946639.jpg (195.24 KB, 下載次數(shù): 3)
下載附件
保存到相冊(cè)
nthuqd2gflp64048946639.jpg
2024-10-5 23:00 上傳
其中:預(yù)分頻值,取值范圍為0~65535。計(jì)數(shù)模式可以是 向上計(jì)數(shù)、向下計(jì)數(shù)、中間對(duì)齊計(jì)數(shù)等。
計(jì)數(shù)周期,對(duì)于16位定時(shí)器,取值范圍為0~65535。時(shí)鐘分頻因子, 可以選擇不分頻、二分頻或四分頻。 重復(fù)計(jì)數(shù)次數(shù),表示定時(shí)器計(jì)數(shù)值達(dá)到計(jì)數(shù)周期n次后才產(chǎn)生中斷。自動(dòng)重裝,設(shè)置為Enable或Disable。觸發(fā)輸出部分本節(jié)用不到,暫不做說明。定時(shí)(溢出)周期 = (預(yù)分頻值+1)*(計(jì)數(shù)周期+1)*分頻因子*(重復(fù)計(jì)數(shù)次數(shù)+1) / 系統(tǒng)時(shí)鐘48MHz,單位為秒。
上圖中(999+1)*(4799+1)*1*1 / 48MHz = 0.1秒,即100ms。定時(shí)器設(shè)置完成后,需要在NVIC Setting中打開定時(shí)器的溢出中斷,TIM1作為高級(jí)定時(shí)器,其捕獲比較中斷(capture compare interrupt)和其它中斷是獨(dú)立的,而其它的普通定時(shí)器只有統(tǒng)一的一個(gè)中斷源。這里只用到了溢出(update)中斷,所以只打開溢出中斷即可。
1uzrcnkoqq464048946739.png (20.16 KB, 下載次數(shù): 2)
下載附件
保存到相冊(cè)
1uzrcnkoqq464048946739.png
2024-10-5 23:00 上傳
設(shè)置完成后點(diǎn)擊 Generate Code生成代碼。
可以看到定時(shí)器的初始化已經(jīng)完成,但是此時(shí)中斷還沒有打開,需要自己添加代碼啟動(dòng)定時(shí)器打開中斷。
3no10aozphc64048946840.png (19.88 KB, 下載次數(shù): 2)
下載附件
保存到相冊(cè)
3no10aozphc64048946840.png
2024-10-5 23:00 上傳
同時(shí),需要自己編寫中斷回調(diào)函數(shù),假設(shè)程序功能是定時(shí)100ms時(shí)間到后翻轉(zhuǎn)LED端口,則代碼如下。
41ysk0t4miw64048946940.png (17.79 KB, 下載次數(shù): 3)
下載附件
保存到相冊(cè)
41ysk0t4miw64048946940.png
2024-10-5 23:00 上傳
編譯程序后下載到電路板,可以看到相應(yīng)的LED燈按照設(shè)定的周期開始閃爍。定時(shí)器的作普通定時(shí)用,使用較簡(jiǎn)單,后面將介紹PWM模式、輸入捕獲比較、編碼器模式等的使用。 |
|