STM32CubeIDE 统计及控制PWM产生个数

STM32 HAL库有两个PWM中断回调函数

void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim) ; PWM脉冲在非阻塞模式下完成回调

void HAL_TIM_PWM_PulseFinishedHalfCpltCallback(TIM_HandleTypeDef *htim);PWM脉冲在非阻塞模式下半完成回调

理论上用以上任一回调函数都能达到控制及统计PWM产生个数。

是void HAL_TIM_PWM_PulseFinishedHalfCpltCallback(TIM_HandleTypeDef *htim);这个回调函数中断并不执行。

故只能用HAL_TIM_PWM_PulseFinishedCallback这个函数统计及控制PWM产生个数了。

STM32CubeIDE:

芯片:STM32F103C8;时钟72MHz;

配置TIM3 产生 2KHz频率的PWM波。

打开TIM3的全局中断。

生成代码。

测试:

目标效果:产生5个PWM个数后停止PWM。

uint32_t pwm_count = 0;

void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)
{
	if(htim->Instance == TIM3)
	{
		if((++pwm_count) >= 5)
		{
			HAL_TIM_PWM_Stop_IT(&htim3, TIM_CHANNEL_1);
		}
	}
}


int main(void)
{
  HAL_Init();
  SystemClock_Config();
  MX_GPIO_Init();
  MX_TIM3_Init();
  /* USER CODE BEGIN 2 */
  printf("Sudaroot\r\n");
  HAL_Delay(1000);
  HAL_TIM_PWM_Start_IT(&htim3, TIM_CHANNEL_1);
  /* USER CODE END 2 */

  while (1)
  {
	  HAL_Delay(3000);
  }
}

现象:

  全篇完。

本人是一个嵌入式未入门小白,博客仅仅代表我个人主观见解,记录成长笔记。
笔记是以最简单的方式,只展示最核心的原理。
若有与 大神大大 见解有歧义,我绝对坚信 大神大大 见解是对的,我的是错的。
若无积分等无法下载源码,可加入QQ群657407920下载交流经验。感谢~!

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值