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

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

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

(1)选择外部晶振

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

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

 第三步:配置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是到达比较值跳变为高,一个先高后低,一个先低后高。

 第四步:在代码内打开定时器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。

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值