打印
[STM32F1]

基于STM32F1 TIM1 输出PWM 时有时无的输出经验分享

[复制链接]
630|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jcky001|  楼主 | 2023-5-16 10:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近有一个项目,需要使用到PWM输出电机速度,开发过程中遇到一个PWM输出时有时无的现象,明明已经配置TIM1输出PWM输出,单独测试也有PWM输出了,但项目大了之后,突然发现明明应该启动的电机不启动,莫名其妙的问题, 然后我查找代码,分析,逻辑上应该是没问题,使用仿真+示波器检测,发现本应该输出的,却没有输出PWM,仿真看寄存器值,确实已经赋值了.


        搜索网上的经验,发现是我的初始化有问题,TIM1是高级定时器,功能多样,初始时没有正确初始,就会出现莫名其妙的问题


正确的PWM初始化有如下变量:
  •     TIM_OCInitTypeDef                 TIM_OCInitStruct;
  •     TIM_OCInitStruct.TIM_OCMode       = TIM_OCMode_PWM2;           //脉冲宽度调制模式1
  •     //输出极性
  •     TIM_OCInitStruct.TIM_OCPolarity   = TIM_OCPolarity_High;       //输出极性
  •     TIM_OCInitStruct.TIM_OCIdleState  = TIM_OCIdleState_Set;       //在空闲时输出
  •     TIM_OCInitStruct.TIM_OutputState  = TIM_OutputState_Enable;    //PWM输出使能(正向通道)
  •     TIM_OCInitStruct.TIM_OutputNState = TIM_OutputNState_Disable;  //PWM输出失能(互补通道)
  •     TIM_OCInitStruct.TIM_OCNPolarity  = TIM_OCNPolarity_High;   //必须
  •     TIM_OCInitStruct.TIM_OCNIdleState = TIM_OCIdleState_Reset;  //必须
  •     TIM_OCInitStruct.TIM_Pulse        = 0;                         //捕获比较的脉冲值
  •     TIM_OC1Init(TIM1,&TIM_OCInitStruct);

复制代码



使用特权

评论回复
沙发
Pretext| | 2023-5-18 15:00 | 只看该作者
是不是没有启动输出?

使用特权

评论回复
板凳
天天向善| | 2023-5-18 15:01 | 只看该作者
最后怎么解决了?改配置还是换个定时器?

使用特权

评论回复
地板
芯路例程| | 2023-5-18 15:02 | 只看该作者
高级定时器使用得时候确实要注意。

使用特权

评论回复
5
万图| | 2024-1-18 11:47 | 只看该作者

测试负载测试是在特定的测试条件下进行的

使用特权

评论回复
6
Uriah| | 2024-1-18 12:26 | 只看该作者

在测试中,可以改变负载电流,得到最大输出电流和输出电压

使用特权

评论回复
7
帛灿灿| | 2024-6-1 11:19 | 只看该作者

信号防雷电路应满足相应接口信号传输速率及带宽的需求,且接口与被保护设备兼容。

使用特权

评论回复
8
Bblythe| | 2024-6-1 12:22 | 只看该作者

随着对电路板模块的需求增加

使用特权

评论回复
9
周半梅| | 2024-6-1 14:18 | 只看该作者

防雷电路的输出残压值必须比被防护电路自身能够耐受的过电压峰值低,并有一定裕量

使用特权

评论回复
10
童雨竹| | 2024-6-1 17:17 | 只看该作者

Cfinal是CESD和人体电容的并联组合

使用特权

评论回复
11
Wordsworth| | 2024-6-1 18:20 | 只看该作者

构成各种滤波器对EMI进行滤波

使用特权

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

本版积分规则

1510

主题

4548

帖子

6

粉丝