[STM32F0] STM32定时器停不下来...

[复制链接]
3086|11
 楼主| new_luc 发表于 2015-4-29 10:06 | 显示全部楼层 |阅读模式
我配置了高级定时器TIM1产生PWM波,用IAR在线调试的时候,全速运行,点击reset之后,TIM1依然输出,要再次点击reset,TIM1才能停止输出。而且,每次点击“下载和在线调试之后”,TIM1就自动运行,而且输出的占空比是上一次在线调试的时候的占空比,并不是我开始配置的占空比,有人遇到过这种情况么?诡异的很啊。
 楼主| new_luc 发表于 2015-4-29 14:29 | 显示全部楼层
caosix 发表于 2015-4-29 14:22
你 是不是 用了  DMA 哦。。。

PWM 输出,总是会输出,,哪怕你 停在断点里:

嗯,用了DMA传输完成中断,用于把ADC转换过来的值读进来,和定时器没有关系的。

调试时点击全速运行了之后,PWM确实会一直输出,但是我刚把程序下载进去准备调试,跳到main函数,我还没点运行呢,也就是程序里面定时器的时钟那个时候都还没有配置呢,定时器就已经在输出PWM了。。。这个就很奇怪了。
wowow 发表于 2015-4-29 14:31 | 显示全部楼层
STM32Cube_FW_F4_V1.5.0库里有这样的宏,F0的宏里应该也有类似的:
#define __HAL_DBGMCU_FREEZE_TIM1()           (DBGMCU->APB2FZ |= (DBGMCU_APB2_FZ_DBG_TIM1_STOP))

评分

参与人数 1威望 +1 收起 理由
dexis + 1 很给力!

查看全部评分

 楼主| new_luc 发表于 2015-4-29 14:56 | 显示全部楼层
caosix 发表于 2015-4-29 14:42
不可能哦,俺 Cube 配置好 Tim2,Tim5 的 PWM ,
如果 不执行 下面的 语句,是不会有 波形输 ...

嗯,我最早的时候也是跟你说的一样的,配置好定时器,执行类似你用的PMW_Start语句之后,PWM才会输出的,现在不行了,不执行PMW_Start它就输出了,而且占空比是上次断电时候的占空比(我的占空比是动态可调的),而不是最初配置的占空比。我现在怀疑是上电reset不成功导致的。
 楼主| new_luc 发表于 2015-4-29 14:57 | 显示全部楼层
wowow 发表于 2015-4-29 14:31
STM32Cube_FW_F4_V1.5.0库里有这样的宏,F0的宏里应该也有类似的:
#define __HAL_DBGMCU_FREEZE_TIM1()     ...

这个怎么用啊,F0里面确实有,我找到了。#define  DBGMCU_APB1_FZ_DBG_TIM6_STOP 这样的。
wowow 发表于 2015-4-29 15:41 | 显示全部楼层
new_luc 发表于 2015-4-29 14:57
这个怎么用啊,F0里面确实有,我找到了。#define  DBGMCU_APB1_FZ_DBG_TIM6_STOP 这样的。 ...

初始化TIMx时调用一下啊,当仿真器停止ARM时,设置某个TIM是停下来还是继续跑。
 楼主| new_luc 发表于 2015-4-29 16:07 | 显示全部楼层
wowow 发表于 2015-4-29 15:41
初始化TIMx时调用一下啊,当仿真器停止ARM时,设置某个TIM是停下来还是继续跑。 ...

嗯,我试试,就在TIMx配置刚开始之前调用一哈
mmuuss586 发表于 2015-4-29 18:36 | 显示全部楼层

还有这个特殊功能啊,一直没注意到呢;
lvyunhua 发表于 2015-4-29 20:10 | 显示全部楼层
不错,学习了。
hclwj181 发表于 2015-4-30 09:16 | 显示全部楼层
我觉得最大的可能是你的单片机喝了脉动,所以肯本停不下来
 楼主| new_luc 发表于 2015-5-10 20:55 | 显示全部楼层
hclwj181 发表于 2015-4-30 09:16
我觉得最大的可能是你的单片机喝了脉动,所以肯本停不下来

应该是吃了炫迈
amanda_s 发表于 2015-5-11 14:22 | 显示全部楼层
wowow 发表于 2015-4-29 15:41
初始化TIMx时调用一下啊,当仿真器停止ARM时,设置某个TIM是停下来还是继续跑。 ...

学习了!谢谢!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

13

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部