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

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

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

STM32CubeMx之TIM定時中斷

[復制鏈接]

454

主題

454

帖子

2398

積分

三級會員

Rank: 3Rank: 3

積分
2398
跳轉(zhuǎn)到指定樓層
樓主
發(fā)表于 2020-3-8 22:34:00 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
STM32有多個定時器可供使用,且有多種使用方式,包括普通定時、PWM輸出、輸入捕獲、觸發(fā)ADC等。本篇文章主要介紹普通定時中斷的使用。前期準備:
  •     STM32硬件電路板及仿真器(以STM32F072C8單片機為例)
  •     Keil v5以上版本(MDK-ARM)
    首先新建工程后,配置系統(tǒng)時鐘為48MHz(參考上一篇GPIO使用中的配置步驟)。以TIM1為例,使能TIM1的時鐘源為Internal Clock(即48MHz系統(tǒng)時鐘),設(shè)置定時器的周期、分頻系數(shù)等。假設(shè)定時周期為100ms,則設(shè)置參數(shù)如下圖。

    其中:預分頻值,取值范圍為0~65535。計數(shù)模式可以是 向上計數(shù)、向下計數(shù)、中間對齊計數(shù)等。
    計數(shù)周期,對于16位定時器,取值范圍為0~65535。時鐘分頻因子, 可以選擇不分頻、二分頻或四分頻。 重復計數(shù)次數(shù),表示定時器計數(shù)值達到計數(shù)周期n次后才產(chǎn)生中斷。自動重裝,設(shè)置為Enable或Disable。觸發(fā)輸出部分本節(jié)用不到,暫不做說明。定時(溢出)周期 = (預分頻值+1)*(計數(shù)周期+1)*分頻因子*(重復計數(shù)次數(shù)+1) / 系統(tǒng)時鐘48MHz,單位為秒。
    上圖中(999+1)*(4799+1)*1*1 / 48MHz = 0.1秒,即100ms。定時器設(shè)置完成后,需要在NVIC Setting中打開定時器的溢出中斷,TIM1作為高級定時器,其捕獲比較中斷(capture compare interrupt)和其它中斷是獨立的,而其它的普通定時器只有統(tǒng)一的一個中斷源。這里只用到了溢出(update)中斷,所以只打開溢出中斷即可。

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

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

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

    使用道具 舉報

    發(fā)表回復

    您需要登錄后才可以回帖 登錄 | 立即注冊

    本版積分規(guī)則


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