前言
記錄一下STM32CubeMX的學(xué)習(xí)筆記,同時分享給初學(xué)的小白,希望一起進(jìn)步。
如何使用STM32CubeMX以及工程創(chuàng)建在之前的博客有提到,這里就直接從定時器講起。
一、本地環(huán)境
編譯環(huán)境:KEIL
代碼生成:STM32CubeMX
庫:HAL
MCU:STM32F072
二、開始
1.定時器配置
假設(shè)你的cubeMX工程已經(jīng)建好,這里我們開始配置定時器2(TIM2),使用內(nèi)部時鐘源。
2.內(nèi)部時鐘配置
配置完GPIO后開始配置時鐘,我這里配置的是內(nèi)部時鐘,配置的24Mhz的內(nèi)部時鐘(HSI)如圖:
2.TIMER配置
我這里配置的是1ms的定時器。我們要通過配置預(yù)分頻和計數(shù)周期來定時1ms。
我們的內(nèi)部時鐘周期配置的是24M,而我們要定時1ms,那么Prescaler設(shè)置成(24-1),Counter Period設(shè)置為(1000-1)。設(shè)置的這兩個數(shù)字可以根據(jù)實(shí)際需求來湊即可,只要算出來是1ms即可。
計算公式:
頻率(f)
時間(F)
預(yù)分頻(Prescaler)
計數(shù)周期(Counter Period)
f = timer_clock / (Prescaler+1) / (Counter_Period+1) //timer在計算的時候會自動將值+1
計算如下:
Prescaler = 24-1
Counter_Period = 1000-1
f = 24Mhz / (24-1+1) / (1000-1+1) = 1000hz
T = 1/1000 = 1ms
配置如圖:
Counter Mode 是 計數(shù)模式,根據(jù)需求向上計數(shù)(up)或者向下計數(shù)(down)。
NVIC中斷配置:
4.代碼生成
時鐘配置完畢后,選擇“Project Manager”到工程配置界面。
1、配置工程的名稱
2、工程存儲路徑
3、IDE選擇(如果是keil工具,選擇MDK-ARM)
4、mcu依賴的cube包在哪個目錄
接著到“Code Generator”下選擇這幾個選項(xiàng)來生成工程:
選擇好過后我們就可以點(diǎn)擊右上角的"GENERATE CODE"按鍵來生成代碼了。
如果提示你的firmware package 缺少直接更新下載即可,如果沒網(wǎng)狀態(tài),就需要去官網(wǎng)下載依賴包放在之前提到的目錄下即可。
我是用一下依賴包生成得工程代碼。
3.編譯工程
點(diǎn)擊編譯按鈕對工程進(jìn)行編譯。
在 CubeMX 生成的文件中添加用戶代碼的時候,必須是寫在/* USER CODE BEGIN n*/和/* USER CODE
END n*/之間。這樣如果需要改變 Cube 工程的配置,在重新生成代碼時,在這兩句注釋之間的語 句不會被覆蓋。而用戶新建或添加的文件不會受到影響。
4.添加功能代碼
我們這里工程就基本建好了,現(xiàn)在來實(shí)現(xiàn)功能代碼部分。
在代碼中添加如下代碼使能定時器中斷:
HAL_TIM_Base_Start_IT(&htim2)
我們要添加函數(shù)功能到回調(diào)函數(shù)內(nèi),那么怎么去找這個回調(diào)函數(shù)了?
1、我們可以打開對應(yīng)的頭文件,這里是stm32f0xx_hal_time.h,找到以callback結(jié)尾的函數(shù)(void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim);)
通過點(diǎn)擊右鍵,然后點(diǎn)擊“go to Definition…”就可以定位到函數(shù)實(shí)現(xiàn)的地方:
這里我們看到這個函數(shù)是被 __weak修飾的函數(shù),所以這個函數(shù)如果我們要使用的話直接把函數(shù)復(fù)制出來在用戶端直接重寫就行了。
在CubeMX生成的程序框架中,TIMER共用一個回調(diào)函數(shù)接口。要想知道是哪個定時器中斷源,就判斷其輸入?yún)?shù)htim即可。
在time.c中添加以下代碼就可以識別對應(yīng)的定時器中斷了。
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim->Instance == TIM2) /* tim2 1ms*/
{
//功能代碼
}
}
定時器配置這樣就結(jié)束了,上面提到內(nèi)部時鐘源的配置,這里在提一下外部時鐘源的配置。
5.外部時鐘配置
將PF1和PF2配置成外部晶振功能:文章來源:http://www.zghlxwxcb.cn/news/detail-428814.html
選擇HSE的時鐘配置如下:文章來源地址http://www.zghlxwxcb.cn/news/detail-428814.html
到了這里,關(guān)于STM32CubeMX學(xué)習(xí)四 之定時器配置的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!