一直在用的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:更新中断,计数器向上溢出/向下溢出,计数器初始化(经过软件或者内部/外部触发) ui
TIM_IT_CC1~4:都是捕获/比较中断,貌似都是平等的,即输入捕获,输出比较spa
TIM_IT_Trigger:触发事件(计数器启动、中止、初始化或者由内部/外部触发计数)code
使用的时候都是调用函数TIM_ITConfig()来使能指定的中断类型,调用TIM_GetITStatus()函数来查看是否有中断发生,入口参数都是平等的。blog
可能就是不一样的事件致使中断的发生略有不一样事件