一直在用的stm32定時器的中斷都是TIM_IT_Update更新中斷,也沒問為什么,直到碰到有人使用TIM_IT_CC1中斷,才想到這定時器的中斷類型究竟有什么區別,都怪當時學習stm32的時候不夠精啊,百度好久也沒見有人解釋清楚,下面開始我的探究之路。下面是所有的定時器中斷類型。
#define TIM_IT_Update ((uint16_t)0x0001) #define TIM_IT_CC1 ((uint16_t)0x0002) #define TIM_IT_CC2 ((uint16_t)0x0004) #define TIM_IT_CC3 ((uint16_t)0x0008) #define TIM_IT_CC4 ((uint16_t)0x0010) #define TIM_IT_COM ((uint16_t)0x0020) #define TIM_IT_Trigger ((uint16_t)0x0040) #define TIM_IT_Break ((uint16_t)0x0080)

沒有頭緒,還是去查看stm32數據手冊吧。
TIM_IT_Update:更新中斷,計數器向上溢出/向下溢出,計數器初始化(通過軟件或者內部/外部觸發)
TIM_IT_CC1~4:都是捕獲/比較中斷,貌似都是平等的,即輸入捕獲,輸出比較
TIM_IT_Trigger:觸發事件(計數器啟動、停止、初始化或者由內部/外部觸發計數)
使用的時候都是調用函數TIM_ITConfig()來使能指定的中斷類型,調用TIM_GetITStatus()函數來查看是否有中斷發生,入口參數都是平等的。
可能就是不同的事件導致中斷的發生略有不同
