按固件库的说明,STM32的通用定时器TIM2有6种方式:TIM_OCMode_Timing;
TIM_OCMode_Active;TIM_OCMode_Toggle;…………;
我写了一个定时器定时100us程序。
按下载的固件库程序里的实例,设置通用TIM2为TIM_OCMode_Timing方式,在定时比较中断里翻转输出PC.06管脚。但是,软件仿真时,是不能实现管脚输出方波的。当将TIM2设为TIM_OCMode_Toggle方式时,才能有方波输出。为什么啊?
请问,TIM_OCMode_Timing与TIM_OCMode_Toggle的区别是什么?
请问你是如何配置的?
TIM_OCMode_Timing是在比较成功后不在对应输出管脚上产生输出。
TIM_OCMode_Toggle是在比较成功后翻转对应输出管脚上的电平。
回复
TIM_OCMode_Timing是在比较成功后不在对应输出管脚上产生输出,但是产生中断啊,我是在中断服务程序里将管脚翻转,应该有方波输出吧。
GPIO_WriteBit(GPIOC, GPIO_Pin_6, (BitAction)(1 - GPIO_ReadOutputDataBit(GPIOC, GPIO_Pin_6)));
但是,事实上,在TIM_OCMode_Timing方式下,按这种中断里翻转管脚的方式,是没有方波输出的啊。有人仿真过官方给的 ExamplesFireWareFWLibexamplesTIMTimeBase例程吗?
回复
程序没问题啊。
我的QQ:330614066,能和您一起探讨下吗?谢谢
最好不要软件仿真
最好不要软件仿真,软件仿真常常不可信
我试过了 楼主
MDK的这个软件仿真没有问题!! 应该是你的程序有问题 或者是你仿真方法不对头
我也遇到这个相同问题,搞了好久。看来仿真不能太信。只是版主应该向KEIL反映一下。
找出毛病了,我在之前的调试中把中断源给失能了,应该是
TIM_ITConfig(TIM2, TIM_IT_CC1 | TIM_IT_CC2 | TIM_IT_CC3 | TIM_IT_CC4, ENABLE);
就可以了!