天天看點

⑤【藍橋杯】STM32G4嵌入式競賽實訓平台(CT117E-M4)學習——定時器中斷一、硬體平台三、STM32G4系列定時器簡介四、配置過程五、編寫函數六、總結

寫在前面——

        本文将介紹嵌入式競賽實訓平台(CT117E-M4)開發闆上定時器中斷的使用。

目錄

一、硬體平台

三、STM32G4系列定時器簡介

四、配置過程

五、編寫函數

六、總結

一、硬體平台

         嵌入式競賽實訓平台(CT117E-M4)是北京國信長天科技有限公司設計、生産的一款“藍橋杯全國軟體與資訊技術專業人才大賽–嵌入式設計與開發科目”專用競賽平台,平台以STM32G431RBT6為主要晶片,預留擴充闆接口,可為使用者提供豐富的實驗場景。

⑤【藍橋杯】STM32G4嵌入式競賽實訓平台(CT117E-M4)學習——定時器中斷一、硬體平台三、STM32G4系列定時器簡介四、配置過程五、編寫函數六、總結

CT117E-M4産片圖檔

二、軟體平台

         KEIL5,STM32CubeMX 

三、STM32G4系列定時器簡介

 從資料手冊當中我們可以找到,STM32G431x6/x8/xB裝置包括兩個進階電機控制定時器、最多六個通用定時器、兩個基本定時器、一個低功耗定時器、兩個看門狗定時器和一個SysTick定時器。下表比較了進階電機控制、通用和基本定時器的功能。

⑤【藍橋杯】STM32G4嵌入式競賽實訓平台(CT117E-M4)學習——定時器中斷一、硬體平台三、STM32G4系列定時器簡介四、配置過程五、編寫函數六、總結
⑤【藍橋杯】STM32G4嵌入式競賽實訓平台(CT117E-M4)學習——定時器中斷一、硬體平台三、STM32G4系列定時器簡介四、配置過程五、編寫函數六、總結

 表格中所含的資訊大緻為:

1.進階電機控制定時器(TIM1、TIM8)

        先進的電機控制定時器可以看作是8個通道上的四相PWM多路複用。它們具有可程式設計插入死區時間的互補PWM輸出。它們也可以被視為完整的通用計時器。 4個獨立通道可用于:

  • 輸入捕獲
  • 輸出比較
  • PWM生成(邊緣或中心對齊模式),具有全調制能力(0-100%)
  • 單脈沖模式輸出

2.通用定時器(TIM2、TIM3、TIM4、TIM15、TIM16、TIM17)

        STM32G431x6/x8/xB裝置中最多嵌入六個可同步的通用定時器(差異見上圖)。每個通用定時器可用于産生PWM輸出,或作為一個簡單的時基。 

  • TIM2、TIM3和TIM4它們是功能齊全的通用定時器:

        –TIM2有一個32位自動加載上/下計數器和32位預分頻器

        –TIM3和TIM4有16位自動加載上/下計數器和16位預分頻器。

        這些定時器具有4個獨立通道,用于輸入捕獲/輸出比較、PWM或單脈沖模式輸出。它們可以 一起工作,也可以通過計時器連結功能與其他通用計時器一起工作,以實作同步或事件連結。計數器可以在調試模式下當機。它們都有獨立的DMA請求生成,并支援正交編碼器。

  •  TIM15、16和17它們是具有中頻功能的通用定時器:

        它們有16位自動重新加載計數器和16位預分頻器

        –TIM15有2個通道和1個互補通道

        –TIM16和TIM17有1個通道和1個互補通道

        所有通道可用于輸入捕獲/輸出比較、PWM或單脈沖模式輸出。定時器可以通過定時器連結功能進行同步或事件連結。定時器具有獨立的DMA請求生成功能。計數器可以在調試模式下當機。

3.基本計時器(TIM6和TIM7)

        基本定時器主要用于DAC觸發器的生成。它們也可以用作通用的16位時基。 

NOTE:需要注意非常重要的一點就是TIM2、TIM3、TIM4、TIM6、TIM7與APB1總線相連,TIM1、TIM8、TIM15、TIM16、TIM17與APB2總線相連,在下面的配置過程中會介紹到。

四、配置過程

(一)時鐘配置

通過官方給的例程我們一般将時鐘配置為80MHz,這樣APB1總線與APB2總線的時鐘都是80MHz了,在使用時就很友善了 ,下面的定時器配置就要以80MHz為基礎。

⑤【藍橋杯】STM32G4嵌入式競賽實訓平台(CT117E-M4)學習——定時器中斷一、硬體平台三、STM32G4系列定時器簡介四、配置過程五、編寫函數六、總結

(二)定時器配置

⑤【藍橋杯】STM32G4嵌入式競賽實訓平台(CT117E-M4)學習——定時器中斷一、硬體平台三、STM32G4系列定時器簡介四、配置過程五、編寫函數六、總結
⑤【藍橋杯】STM32G4嵌入式競賽實訓平台(CT117E-M4)學習——定時器中斷一、硬體平台三、STM32G4系列定時器簡介四、配置過程五、編寫函數六、總結

基本配置步驟: 

1.選擇TIM2

2.定時器時鐘選擇内部時鐘

Clock Source(時鐘來源)       

  • 選項1 :Internal Clock  内部時鐘 
  • 選項2 : ETR2 外部觸發輸入(ETR)(僅适用TIM2,3,4)

3.配置參數

  • Prtscaler (定時器分頻系數):7999
  • Counter Mode(計數模式):Up(向上計數模式)                    
  • Counter Period(自動重裝載值):999
  • CKD(時鐘分頻因子):No Division 不分頻 ,選項:  可以選擇二分頻和四分頻
  • auto-reload-preload(自動重裝載): Enable 使能
  • TRGO Parameters:觸發輸出 (TRGO),不使能,與本節無關

        TRGO:定時器的觸發信号輸出  在定時器的定時時間到達的時候輸出一個信号(如:定時器更新産生TRGO信号來觸發ADC的同步轉換) 

4.使能定時器中斷

NOTE: 定時器溢出時間是這樣計算的

⑤【藍橋杯】STM32G4嵌入式競賽實訓平台(CT117E-M4)學習——定時器中斷一、硬體平台三、STM32G4系列定時器簡介四、配置過程五、編寫函數六、總結
 這裡我們 arr=999,psc=7999,Tclk=80MHz        Tout = (1000*8000)/80us  =  100ms

五、編寫函數

首先在主函數初始化區域調用:

/* USER CODE BEGIN 2 */
    HAL_TIM_Base_Start_IT(&htim2); //使能定時器中斷
  /* USER CODE END 2 */
           

在中斷回調函數中可以這樣寫:

/* USER CODE BEGIN 4 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	i++;
	if(i==10)
	{
		i=0;
		HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, 0);
		HAL_GPIO_WritePin(GPIOE, GPIO_PIN_5, 0);
		HAL_Delay(100);
		HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, 1);
		HAL_GPIO_WritePin(GPIOE, GPIO_PIN_5, 1);
	}
}
/* USER CODE END 4 */
           

 如果出現程式在延時函數中死循環不出來,可以看看https://blog.csdn.net/m0_57147943/article/details/123518122?spm=1001.2014.3001.5501能不能幫你解決

常用函數:

HAL_StatusTypeDef HAL_TIM_Base_Start(TIM_HandleTypeDef *htim); //使能定時器
HAL_StatusTypeDef HAL_TIM_Base_Stop(TIM_HandleTypeDef *htim); //停止定時器
/* Non-Blocking mode: Interrupt */
HAL_StatusTypeDef HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim); //使能定時器中斷,同時使能定時器
HAL_StatusTypeDef HAL_TIM_Base_Stop_IT(TIM_HandleTypeDef *htim); //停止使能定時器中斷,同時停止定時器
           

六、總結

定時器中斷就到這裡了,如果此文章對你有幫助,歡迎

點贊

關注

收藏

轉發

繼續閱讀