STM32 PWM移植排故

1,现象

硬件更新后,PWM波没有输出。

2,思路

1,GPIO设置通用推挽输出用定时器产生方波,用示波器观察是否正常产生方波。如果正常,硬件无问题,GPIO无问题。
2,定时器设置计数中断,在中断处理函数设置断点,观察能否进入断点,如果能,则定时器模块无问题。芯片有相应定时器。
3,检查配置流程。

3,原因

1,GPIO设置

1)管脚分配注意是否有remap,需要remap的是否设置,;
2)GPIO设置中是否开启AFIO及响应管脚;
3)是否与JTAG冲突。

GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable, ENABLE);//关闭jtag,使能SW-DP

GPIO_PinRemapConfig(GPIO_PartialRemap1_TIM2, ENABLE);//T2 partial remap
GPIO_PinRemapConfig(GPIO_FullRemap_TIM3, ENABLE);//T3 fullremap

2,定时器配置

1)通道配置
2)主输出使能:关于这一句应用中发现TIM2,TIM3,TIM4不加PWM能正常输出,但是TIM8不加输出不出来,详细原因待确认。

TIM_DeInit(TIM8);
  /* Time base configuration */
  TIM_TimeBaseStructure.TIM_Period = velocity.RT[3];
  TIM_TimeBaseStructure.TIM_Prescaler = 10;
  TIM_TimeBaseStructure.TIM_ClockDivision = 0;
  TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
  TIM_TimeBaseInit(TIM8, &TIM_TimeBaseStructure);


  TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;
  TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;
  TIM_OCInitStructure.TIM_Pulse = CCR4_Val;
  TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High;
  TIM_OC2Init(TIM8, &TIM_OCInitStructure);//注意通道分配
  TIM_OC2PreloadConfig(TIM8, TIM_OCPreload_Enable);//占空比寄存器是否允许缓冲

  TIM_Cmd(TIM8, ENABLE);
  TIM_CtrlPWMOutputs(TIM8, ENABLE);//是否开启主输出使能;TIMx_BDTR寄存器
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值