STM32三种对齐计数模式及其中断回调函数——用CubeMX工具

STM32定时器的PWM模式主要可以分为两大类,一类是边沿对齐模式,另一类时中间对齐模式。中间对齐模式又有三种对齐方式,这篇文章就来简单的谈一下中间对齐模式种三种对齐方式的区别。

我们可以看参考手册里面的内容

从中断的角度来说,三种对齐模式的差别在于:

模式一 仅在向下计数溢出时产生中断(前提是使能了中断),模式一二仅在向上计数溢出时产生中断,模式三则在两种情况下都会产生中断。如图:

接下来我们用一段程序简单说明

cubemx关于定时器的配置

说明:例子中所采用的芯片主频为170M,经过以下配置,为每1ms计数一次。

冲断频率 = 170M / (170 * 1000) = 1000(Hz)

主函数部分:

int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_TIM1_Init();
  /* USER CODE BEGIN 2 */

	HAL_TIM_Base_Start_IT(&htim1);//一定要打开
	HAL_TIM_PWM_Start_IT(&htim1,TIM_CHANNEL_1);//一定要打开

	/* 定时器通道1输出PWM */
	HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_2);

	/* 定时器通道1互补输出PWM */
	HAL_TIMEx_PWMN_Start(&htim1, TIM_CHANNEL_2);
	__HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_2,500);

  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

中断函数部分:(注意函数名)

对于模式1与模式2:

理论上产生中断的频率为1KHz,但是由于其在向上计数和向下计数一整个过程中只有一处中断,所以进入中断的频率应为500Hz。所产生的PWM波的频率也应为500Hz。

对于在中断函数里面进行反转的PD4IO口,进入一次中断翻转一次,进入两次中断才能反转出一个周期,所以其频率应为250Hz。

对于模式三,IO翻转的频率要乘以二。

我们通过比较PWM输出的波形,与中断函数中反转的IO的波形开观察三种对齐方式的区别。

红色为PWM输出通道,黑色为反转的IO口。

模式一: 红色500Hz,黑色250Hz。

模式二:红色500Hz,黑色250Hz,但是两个波形的“相对位置”与模式1不同。

模式三:黑红都50Hz。

以上阐述了PWM输出中断的三种对齐方式的不同之处。

参考文章:

(25条消息) STM32 HAL库PWM回调函数的特性_hmc_123的博客-CSDN博客_hal库回调函数icon-default.png?t=M3K6https://blog.csdn.net/hmc_123/article/details/109260888?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165148382916782184684892%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=165148382916782184684892&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-1-109260888.142^v9^control,157^v4^control&utm_term=HAL_TIM_PWM_PulseFinishedCallback&spm=1018.2226.3001.4187

 

  • 5
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值