我想使用TIM1的捕获功能,需要用到更新中断和捕获中断。
但是发现TIM1并不是像其他的通用定时器一样,抛去TIM1是挂载到APB2上这一点不谈,区别主要体现在两方面,暂时使用库函数编写,寄存器还没有尝试。
首先是配置NVIC中断分组时,通用定时器直接NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;就可以配置全部的定时器中断,然后在下面的中断服务函数void TIM2_IRQHandler(void);中处理就可以了。
但是TIM1中断是分开的,分为四种,TIM1_BRK_IRQn,TIM1_UP_IRQn ,TIM1_TRG_COM_IRQn,TIM1_CC_IRQn,比如我现在要使用TIM1_UP_IRQn 和TIM1_CC_IRQn,那么我是否需要分别给他们配置一个抢占优先级和响应优先级,还是我可以这样:
NVIC_InitStructure.NVIC_IRQChannel = TIM1_CC_IRQn | TIM1_UP_IRQn;
然后给他们配置一个相同的抢占优先级和响应优先级?
接下来是中断服务函数,对应上面,TIM1的中断服务函数也是四种,TIM1_BRK_IRQHandler,TIM1_UP_IRQHandler,TIM1_TRG_COM_IRQHandler,TIM1_CC_IRQHandler(这个可以在启动文件中找到),那么还是上面的例子,如果我使用更新中断和捕获中断是否要调用两个中断服务函数,我现在的状况就是能进入捕获中断,无法进入更新中断。
|