搭建stm32电机控制代码框架(四)——单路PWM生成

STM32中单路PWM的生成一般是基于某一个通用定时器,本次小实验选取TIM2通用定时器,选择PA5作为PWM端口输出。配置步骤如下:

第一步:配置外部晶振与基本的时钟,如下图所示。

(1)选择外部晶振

搭建stm32电机控制代码框架(四)——单路PWM生成_第1张图片

 (2)配置时钟树,如下图所示,TIM2的时钟总线挂在ABP1上,此时时钟源为72M

搭建stm32电机控制代码框架(四)——单路PWM生成_第2张图片

第二步:配置GPIO,配置GPIO_PA5为TIM2_CH1的输出端口。

搭建stm32电机控制代码框架(四)——单路PWM生成_第3张图片

 第三步:配置TIM2时钟,其配置如下图所示,图中1-6分别为

  1. 选择时钟源为内部时钟;
  2. 选择通道1为PWM生成模式;
  3. TIM2内部分频系数为7200-1=7199,到达7200分频的效果;
  4. 设置累加计数的TPRD值为5000 - 1 = 4999 达到的是5000的效果;
  5. Pulse设置占空比,1000/5000 = 20% 此时占空比为20%。
  6. PWM比较值电平跳变的模式,模式1是到达比较值跳变为低,模式2是到达比较值跳变为高,一个先高后低,一个先低后高。

搭建stm32电机控制代码框架(四)——单路PWM生成_第4张图片

 第四步:在代码内打开定时器TIM2的第一个通道,这步很关键,必须要用户自己打开,CUBEMX仅仅只是帮我们把底层配置好,这个开关还是靠我们自己定义,代码如下。

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_TIM2_Init();
  /* USER CODE BEGIN 2 */
	HAL_TIM_PWM_Start(&htim2,TIM_CHANNEL_1);   //主要是这句

 第五步:进行实验,实验结果如下图所示,第一张是mode1,第二章是mode2,结果如设计所得。这里需要解释一下的是为什么周期是500ms,因为时钟是72M的,但是分频数是7200,所以此时TIM2的7200个时钟脉冲代表1s,而此时count period的值是5000,5000/10000*1s = 0.5s所以周期就是500ms。

搭建stm32电机控制代码框架(四)——单路PWM生成_第5张图片

 

搭建stm32电机控制代码框架(四)——单路PWM生成_第6张图片

 

你可能感兴趣的:(stm32,stm32,单片机,嵌入式硬件)