你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
攻城狮Melo 发布时间:2023-5-15 21:01
最近有一个项目,需要使用到PWM输出电机速度,开发过程中遇到一个PWM输出时有时无的现象,明明已经配置TIM1输出PWM输出,单独测试也有PWM输出了,但项目大了之后,突然发现明明应该启动的电机不启动,莫名其妙的问题, 然后我查找代码,分析,逻辑上应该是没问题,使用仿真+示波器检测,发现本应该输出的,却没有输出PWM,仿真看寄存器值,确实已经赋值了.
, b6 Z5 b7 T. p& \! m1 O9 O; ]0 g
7 X# K9 }! v: h! L, }) j% x" `% X
+ o5 s+ F0 n" P8 f& d1 ^
        搜索网上的经验,发现是我的初始化有问题,TIM1是高级定时器,功能多样,初始时没有正确初始,就会出现莫名其妙的问题& `8 P' a. A4 g4 `  V
1 b) F: r' A- J
- ?& R; Z: c) p6 |3 h
正确的PWM初始化有如下变量:7 J6 P) b* z: `
  1.     TIM_OCInitTypeDef                 TIM_OCInitStruct;
    3 ]5 w/ d6 k9 ~: A- {
  2.     TIM_OCInitStruct.TIM_OCMode       = TIM_OCMode_PWM2;           //脉冲宽度调制模式1" @, u' K, s" a$ ?3 C
  3.     //输出极性
    3 M3 n7 y1 _4 ?- V4 [
  4.     TIM_OCInitStruct.TIM_OCPolarity   = TIM_OCPolarity_High;       //输出极性
    4 r( C/ ?' T/ ~& I3 @: U) E9 K/ [
  5.     TIM_OCInitStruct.TIM_OCIdleState  = TIM_OCIdleState_Set;       //在空闲时输出
    " B8 Y9 U- q, S  `, n; a6 Q! v
  6.     TIM_OCInitStruct.TIM_OutputState  = TIM_OutputState_Enable;    //PWM输出使能(正向通道)2 e# \$ p" D  l- j/ i& s& \
  7.     TIM_OCInitStruct.TIM_OutputNState = TIM_OutputNState_Disable;  //PWM输出失能(互补通道)
    0 L9 J& U. a0 x3 \+ T+ {& m
  8.     TIM_OCInitStruct.TIM_OCNPolarity  = TIM_OCNPolarity_High;   //必须
    3 }, n! ]7 ~& x' z5 b7 E& I
  9.     TIM_OCInitStruct.TIM_OCNIdleState = TIM_OCIdleState_Reset;  //必须2 {3 @, a: ?# }% d
  10.     TIM_OCInitStruct.TIM_Pulse        = 0;                         //捕获比较的脉冲值+ k) H/ {  v1 M; j
  11.     TIM_OC1Init(TIM1,&TIM_OCInitStruct);
复制代码

! ^' ~5 P* |" a. W
& K, l" o1 d- s————————————————
: P! l, a% }7 @6 a版权声明:wenkic 小琪- }4 H, j) ~/ f' S
如有侵权请联系删除
' G) o, W5 o; J% n" C5 z% Q8 o0 K6 E' e

( g, X& ^6 J+ Z
收藏 评论0 发布时间:2023-5-15 21:01

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版