電子產(chǎn)業(yè)一站式賦能平臺(tái)

PCB聯(lián)盟網(wǎng)

搜索
查看: 48|回復(fù): 0
收起左側(cè)

STM32CubeMx之TIM定時(shí)中斷

[復(fù)制鏈接]

454

主題

454

帖子

2398

積分

三級(jí)會(huì)員

Rank: 3Rank: 3

積分
2398
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2020-3-8 22:34:00 | 只看該作者 |只看大圖 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
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ù)如下圖。

    其中:預(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)中斷,所以只打開溢出中斷即可。

    設(shè)置完成后點(diǎn)擊 Generate Code生成代碼。
    可以看到定時(shí)器的初始化已經(jīng)完成,但是此時(shí)中斷還沒有打開,需要自己添加代碼啟動(dòng)定時(shí)器打開中斷。

    同時(shí),需要自己編寫中斷回調(diào)函數(shù),假設(shè)程序功能是定時(shí)100ms時(shí)間到后翻轉(zhuǎn)LED端口,則代碼如下。

    編譯程序后下載到電路板,可以看到相應(yīng)的LED燈按照設(shè)定的周期開始閃爍。定時(shí)器的作普通定時(shí)用,使用較簡(jiǎn)單,后面將介紹PWM模式、輸入捕獲比較、編碼器模式等的使用。
  • 發(fā)表回復(fù)

    本版積分規(guī)則


    聯(lián)系客服 關(guān)注微信 下載APP 返回頂部 返回列表