关于如何单独失能STM32 TIM通道的方法

来源:互联网 发布:淘宝关注的主播在哪里 编辑:程序博客网 时间:2024/05/21 08:39

源文章地址:http://xukao5671927.lofter.com/post/1cc59b10_41094cd

关于如何单独失能STM32 TIM通道的方法(转载)

个人项目需要单独失能TIM通道,这篇博文很好的解决了我的问题。


最近一个项目涉及到了六路PWM的产生,这里就不说这个了,如果有不会的可以参考我的另外一篇博客。这里说一下如何单独的关闭与开启定时器的一路通道,参考了很多网友走过来的历程,这里引用他们的例子,特说明,目的为了大家更好的学习,希望他们理解。

网友以前遇到问题:

TIM2的4个通道想分别用在不同的事件处理中,但是似乎只有TIM_Cmd()这函数可以用,就是把所有通道同时开启或关闭, 而想用TIM_CCxCmd()来分别操作各个通道则完全不起作用。 

比如说TIM_Cmd(TIM2, ENABLE); 了之后,再TIM_CCxCmd(TIM2, TIM_Channel_1, TIM_CCx_Disable);就没办法关闭这个通道,还是会不停的进定时器中断。如果TIM_Cmd(TIM2, DISABLE); 了,则TIM_CCxCmd(TIM2, TIM_Channel_1, TIM_CCx_Enable); 
也没办法把这个通道开启。请问该怎么解决这种问题。。。 
(网友1的程序中使用的是void TIM2_IRQHandler(void)定时器中断) 
我的总结:如果你是和网友的使用方法一致,使用到了TIMx_IRQHandler这个中断函数,那么你单独关闭通道的函数则是 TIM_ITConfig(TIM2 , TIM_IT_CC1, ENABLE);或DISABLE,直接开中断或关中断。而如果你不是使用的这种中断,而是系统自动配置的时基单元的中断,那么单独关闭与开启一路通道则需要使用 
TIM_CCxCmd(TIM2, TIM_Channel_1, TIM_CCx_Enable);或DISABLE

0 0
原创粉丝点击