打印
[应用相关]

配置高级定时器TIM1产生PWM波

[复制链接]
606|24
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
happy_10|  楼主 | 2020-3-7 16:07 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
用IAR在线调试的时候,全速运行,点击reset之后,TIM1依然输出,要再次点击reset,TIM1才能停止输出。

使用特权

评论回复
沙发
wenfen| | 2020-3-7 16:10 | 只看该作者
还有别的现象吗

使用特权

评论回复
板凳
happy_10|  楼主 | 2020-3-7 16:13 | 只看该作者
每次点击“下载和在线调试之后”,TIM1就自动运行,

使用特权

评论回复
地板
wenfen| | 2020-3-7 16:21 | 只看该作者
占空比呢

使用特权

评论回复
5
happy_10|  楼主 | 2020-3-7 16:25 | 只看该作者
输出的占空比是上一次在线调试的时候的占空比,并不是我开始配置的占空比,有人遇到过这种情况么?诡异的很啊。

使用特权

评论回复
6
zhuhuis| | 2020-3-7 16:28 | 只看该作者
你 是不是 用了  DMA 哦。。。

使用特权

评论回复
7
tian111| | 2020-3-7 16:31 | 只看该作者

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

PWM都会 照样输出 —— 。。。没害处 就得了。

使用特权

评论回复
8
happy_10|  楼主 | 2020-3-7 16:35 | 只看该作者
嗯,用了DMA传输完成中断,用于把ADC转换过来的值读进来,和定时器没有关系的。

使用特权

评论回复
9
happy_10|  楼主 | 2020-3-7 16:49 | 只看该作者
调试时点击全速运行了之后,PWM确实会一直输出,但是我刚把程序下载进去准备调试,跳到main函数,我还没点运行呢,也就是程序里面定时器的时钟那个时候都还没有配置呢,定时器就已经在输出PWM了。。。这个就很奇怪了。

使用特权

评论回复
10
wenfen| | 2020-3-7 16:52 | 只看该作者

STM32Cube_FW_F4_V1.5.0库里有这样的宏,F0的宏里应该也有类似的:
#define __HAL_DBGMCU_FREEZE_TIM1()           (DBGMCU->APB2FZ |= (DBGMCU_APB2_FZ_DBG_TIM1_STOP))

使用特权

评论回复
11
chenho| | 2020-3-7 16:54 | 只看该作者

不可能哦,俺 Cube 配置好 Tim2,Tim5 的 PWM ,
如果 不执行 下面的 语句,是不会有 波形输出的。

使用特权

评论回复
12
gongche| | 2020-3-7 16:58 | 只看该作者
对,但是一旦执行之后,就算CPU停在断点里,波形照样输出。

使用特权

评论回复
13
happy_10|  楼主 | 2020-3-8 10:16 | 只看该作者
嗯,我最早的时候也是跟你说的一样的,配置好定时器,执行类似你用的PMW_Start语句之后,PWM才会输出的,现在不行了,不执行PMW_Start它就输出了,而且占空比是上次断电时候的占空比(我的占空比是动态可调的),而不是最初配置的占空比。我现在怀疑是上电reset不成功导致的。

使用特权

评论回复
14
huwr| | 2020-3-8 10:20 | 只看该作者

/* USER CODE BEGIN 3 */
  
/*TIM2->CCER= 0x1111;
  TIM2->CR1 = TIM2->CR1 | 0x0081; */
  HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);
  HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_2);
  HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_3);
  HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_4);
/*TIM5->CCER= 0x1111;
  TIM5->CR1 = TIM5->CR1 | 0x0081; */
  HAL_TIM_PWM_Start(&htim5,TIM_CHANNEL_1);
  HAL_TIM_PWM_Start(&htim5,TIM_CHANNEL_2);
  HAL_TIM_PWM_Start(&htim5,TIM_CHANNEL_3);
  HAL_TIM_PWM_Start(&htim5,TIM_CHANNEL_4);

使用特权

评论回复
15
happy_10|  楼主 | 2020-3-8 10:24 | 只看该作者

这个怎么用啊,F0里面确实有,我找到了。#define  DBGMCU_APB1_FZ_DBG_TIM6_STOP 这样的。

使用特权

评论回复
16
huanghuac| | 2020-3-8 10:27 | 只看该作者
初始化TIMx时调用一下啊,当仿真器停止ARM时,设置某个TIM是停下来还是继续跑。

使用特权

评论回复
17
happy_10|  楼主 | 2020-3-8 10:32 | 只看该作者
嗯,我试试,就在TIMx配置刚开始之前调用一哈

使用特权

评论回复
18
huanghuac| | 2020-3-8 10:36 | 只看该作者
还有这个特殊功能啊,一直没注意到呢;

使用特权

评论回复
19
happy_10|  楼主 | 2020-3-8 10:40 | 只看该作者
应该是吃了炫迈

使用特权

评论回复
20
gongche| | 2020-3-8 10:46 | 只看该作者
楼主问下  你下载STM32F0程序  是用什么工具和软件下载的?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

744

主题

7973

帖子

6

粉丝