【STM32CubeMX——PWM配置】

使用CubeMX对STM32进行PWM配置

一、使用CubeMX进行基本配置
1、选择定时器通道

随便选择一个为例子,TIM2channel 1
【STM32CubeMX——PWM配置】_第1张图片

2、对TIM2 channel1的预分频器、自动重装值等进行设置

时钟配置的是72MHZ的,预分频器就设置的71
【STM32CubeMX——PWM配置】_第2张图片
关于PWM的模式选择
(1)、PWM mode 1
在向上计数中,当计数值小于CCR值时输出高电平,计数值大于CCR值时输出低电平;在向下计数中,当计数值小于CCR值时输出低电平,计数值大于CCR值时输出高电平;
(2)、PWM mode 2:
在向上计数中,当计数值小于CCR值时输出低电平,计数值大于CCR值时输出高电平;在向下计数中,当计数值小于CCR值时输出高电平,计数值大于CCR值时输出低电平;
PWM频率:Freq = CK_PSC/(PSC+1)/(ARR+1)
PWM占空比:Duty = CRR/(ARR+1)
PWM分辨率:Reso = 1/(ARR+1)

二、在keil 5 中进一步完善
1、开启定时器1的通道1的PWM输出

stm32f1xx_hal_tim.c里面找到HAL_TIM_PWM_Start()函数开启定时器1的通道1的PWM输出

 /* USER CODE BEGIN TIM2_Init 2 */
	HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);
  /* USER CODE END TIM2_Init 2 */**

在主函数里面或者其它地方都可以,我是在定时器的初始化里面开启的

2、改变CCR的值(改变占空比)

有两种方法,一种是调用hal库里面的__HAL_TIM_SetCompare()函数,还有一种就是直接操作寄存器`

  /* USER CODE BEGIN 2 */
	int speed=0;
	__HAL_TIM_SetCompare(&htim2,TIM_CHANNEL_1,speed);
	 TIM2->CCR1 = speed;         与上方作用相同
  /* USER CODE END 2 */

你可能感兴趣的:(stm32,单片机,arm)