基于STM32CUBEMX的STM32F103C8占空比可调方波配置

占空比可调方波往往用来进行电机转速控制,而我恰好想等同学画完HFSS好一起回宿舍,写个文章介绍一下基于STM32CUBEMXSTM32F103C8占空比可调方波配置流程。测试源码在最下面!!!

首先是时钟配置:
我这边全部使用的是外部晶振,晶振频率是8M,因此在STM32CUBEMX需要进行相关配置。
首先需要把SYSTEM CORE里面的RCC进行参数调整,把高速外部时钟与低速外部时钟全部设置为外部陶瓷晶体,配置图如下(Crystal那个就是):
在这里插入图片描述
随后进行时钟树配置,我这边使用的是8M的外部时钟,因此需要配置外部时钟为8M,童鞋们根据自己实际情况做相应调整。
在这里插入图片描述
这里直接把速率拉满到最高的72M,CUBE会对锁相环进行自动配置,记得一定要用外部时钟源,如果使用内部时钟好像最高只能倍频到64M。下图里面的HSE就代表外部高速时钟:
在这里插入图片描述
然后是定时器配置:
PWM要用定时器产生才会标准,当然自然不是在定时器中断里面控制IO口这样的低级别方法。这里使用定时器1的通道1产生PWM,自动绑定的IO口是PA8:
在这里插入图片描述
大家可以看到定时器1配置里面的Channel1后面已经是PWM Generation CH1了。下面进行定时器分频系数和计数周期的设置。就是分别是下面两个参数:在这里插入图片描述
在这里插入图片描述

在此以产生100HZ的方波为例,需要设置分频系数为71,计数周期为9999,为什么这样设置呢?在此给出一个公式:
(PWM频率)=(定时器挂接的时钟线频率)/[(分频系数+1)X(计数周期+1)]
对于STM32F103C8来说,定时器挂接的时钟线频率为72M(一般情况下定时器挂接的时钟线频率会等于系统时钟频率,但存在例外),上面设置了分频系数为71,计数周期为9999。因此实际产生的PWM频率为:
72000000/(72X10000)=100HZ
因此产生的PWM频率为100HZ,再比如如果我要产生200HZ的PWM,我只要设置分频系数为71,计数周期为4999就可以了。

然后在CUBEMX点击生成代码就OK啦。

然后是main函数启动PWM和进行占空比修改:
配置已经完成,但是生成的代码不会让PWM自己出现,需要人为添加代码打开PWM。打开代码如下:

HAL_TIM_PWM_Start(&htim1,TIM_CHANNEL_1);

这里我只打开了定时器1的通道1,但如果童鞋需要使用更多通道的话需要逐一打开各个通道。
然后是占空比修改,我这里设置占空比为50。代码如下:

__HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,5000);

可以看到这个函数有3个参数,分别是句柄htim1,定时器通道TIM_CHANNEL_1,最后一个参数5000就和占空比有关。但为什么5000就是50占空比呢?在此给出公式:
占空比(%)=100x(设置的值)/(计数周期+1)
设置的值就好比上面的5000,技术周期在我们配置CUBEMX定时器的时候已经确定了,下面代入公式进行简单运算:
占空比=100x5000/10000=50%。正确!!!
如果在此基础上我要产生占空比40%的PWM则只需设置__HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,4000);就可以实现啦。

给出效果(占空比50%,对应__HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,5000);):
在这里插入图片描述
给出效果(占空比40%,对应__HAL_TIM_SET_COMPARE(&htim1,TIM_CHANNEL_1,4000);):
在这里插入图片描述
测试代码连接如下:https://download.csdn.net/download/weixin_44584198/18846340

  • 8
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 4
    评论
### 回答1: 要在STM32F103C8T6上输出方波,可以使用定时器和PWM模块来实现。以下是实现步骤: 1. 初始化定时器和PWM模块。可以使用CubeMX或手动编写代码来完成。 2. 设置定时器的周期和占空比。周期决定方波的频率,占空比决定方波的高低电平比例。 3. 启动定时器和PWM模块。 4. 在主循环中可以通过改变占空比来改变方波的高低电平比例,从而实现PWM输出。 需要注意的是,定时器和PWM模块的具体配置和使用方法会根据具体的开发板和开发环境而有所不同。建议参考相关的开发文档和示例代码来完成具体的实现。 ### 回答2: STM32F103C8T6是一款高性能的ARM Cortex-M3单片机,拥有丰富的外设资源,可以广泛应用于各种领域,如家用电器、工业控制、汽车电子等。其中,PWM输出是STM32F103C8T6常见的应用之一。 PWM(Pulse Width Modulation)即脉宽调制,是一种用于数字信号的调制方式。通过控制一个周期内高电平和低电平的时间比例,可以实现输出任意精度的模拟信号。在STM32F103C8T6中,可以通过引脚复用和定时器来实现PWM输出。 具体实现步骤如下: 1. 配置引脚复用功能 先要将GPIO引脚设置为TIMx的复用输出模式,如PA8为TIM1_CH1的输出引脚,将PA8引脚设置为复用模式即可。 2. 配置定时器 然后配置TIMx定时器为PWM输出模式。根据需要设定定时器的计数时钟、计数周期、占空比等参数。 3. 开始输出PWM信号 通过启动TIMx的PWM输出,可以在引脚上实现方波信号的输出。 通过上述步骤,就可以在STM32F103C8T6上实现PWM输出方波的功能。当然,具体的实现还需要根据具体的应用需求进行调整和优化。 ### 回答3: stm32f103c8t6是一款常见的32位微控制器,具有多种功能与特性,包括PWM输出方波功能。PWM即脉宽调制,它可以将数字信号转化为模拟信号输出,用于控制外部电路,比如电机、LED灯等。 在stm32f103c8t6中,PWM输出方波需要设置定时器(TIM)和比较器(OC)。具体步骤如下: 1. 配置定时器:选择一个可用的定时器,并设置它的时钟频率、预分频、计数器重载等参数。比如,选择TIM2定时器,设置时钟频率为72MHz,预分频为72,计数器重载为1000,则定时器的计数频率为1MHz,计数范围为0至1000。 2. 配置比较器:选择一个比较器通道,并设置它的输出模式、输出极性、占空比等参数。比如,选择OC1比较器通道,设置输出模式为PWM模式1,输出极性为正极性,占空比为50%。 3. 启动定时器:将定时器设置为自动加载模式,并启动定时器。 4. 启动比较器:启动比较器通道,使其开始输出PWM波形。 5. 输出方波:在一定的时间内扫描定时器计数器的,并改变比较器的占空比,从而产生PWM波形,进而输出方波。 需要注意以下几点: 1. 在设置定时器和比较器时,需按照客户需求进行合理的参数设置,以保证输出的方波满足客户要求。 2. 输出方波占空比可以通过改变比较器的输出实现。 3. 定时器和比较器的具体设置方式可以参考stm32f103c8t6的相关资料或开发板手册。 综上所述,stm32f103c8t6可以实现PWM输出方波功能。在具体应用过程中,我们需要根据实际需求进行配置并进行试验,以保证输出的方波满足客户要求。
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怡步晓心l

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值