STM32 基于HAL库的产生指定数量的PWM

测试是基于正点原子STM32精英版,芯片为STM32F103ZET6。

HAL库配置

记得打开TIMER的中断
在这里插入图片描述
在这里插入图片描述

程序

 HAL_TIM_PWM_Start_IT(&htim3, TIM_CHANNEL_4); //此处一句后可直接进入中断

void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) //中断回调
{
  static uint16_t i = 0;
  i++;
  if(i >= 10)  //此处10为产生PWM的数量,可设置为变量实时改变
  {
    i =0;
    HAL_TIM_PWM_Stop(&htim3, TIM_CHANNEL_4); //产生指定数量的PWM波后停止PWM的产生
  }
}

说明

测试是可以进入HAL_TIM_PWM_PulseFinishedCallback中断回调,根据网上各种人的结论,测试100K以下可以进入中断,但不知道数量是否对,40kHz以下输出脉冲数量是对的


自己测试时,140KHz以上不稳定,可能会在波形停止后有个延时毛刺。140KHz以下能稳定输出自己所需数量的波形。


由于测试程序中除产生波形以及中断程序外未有其他程序,在使用过程中还需测试。

图说测试结果(看图中的波形频率)

20KHz的波形,设置产生5个PWM波
20KHz的波形,设置产生5个PWM波
135KHz的波形,设置产生10个PWM波
135KHz的波形,设置产生10个PWM波
142KHz的波形,设置产生10个PWM波
142KHz的波形,设置产生10个PWM波
142KHz的波形,设置产生10个PWM波,有毛刺
142KHz的波形,设置产生10个PWM波,有毛刺
144KHz的波形,设置产生10个PWM波
144KHz的波形,设置产生10个PWM波
168KHz的波形,设置产生10个PWM波,有毛刺
168KHz的波形,设置产生10个PWM波,有毛刺
263KHz的波形,设置产生10个PWM波,实际产生13个PWM波
263KHz的波形,设置产生10个PWM波,实际产生13个PWM波

  • 7
    点赞
  • 40
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值