本教程是关于使用stm32f103微控制器的内部硬件定时器产生pwm(脉宽调制)信号。Stm32f103微控制器组件/外设初始化代码使用stmcubemx ide生成,代码在keil MDK-ARMv6 ide中编写和编译。一个简单的led由一个固定的pwm信号输出导出。Led会根据pwm引脚输出的占空比和频率而闪烁。一个单独的Pwm信号产生/输出在本教程中,但您可以产生多个Pwm信号与相同的方法和设置。
我将使用stm32f103单片机的timer-4输出一个频率为1hz,占空比为50%的pwm(脉宽调制)信号。Timer-4 channel-1用于输出信号。Channel-1对应stm32f103单片机的PB6引脚。在PB6连接一个led,可以看到pwm输出。1hz的时域频率为T=1/f > T=1/ 1hz > T=1 s。所以1hz的频率转换为1s我的占空比是50%所以PB6引脚的led会以半秒的速度闪烁。
如何产生所需的/特定的PWM频率?公式推导与计算。
Pwm的决议
Stmcube-Mx代码初始化步骤生成keil MDK-ARM代码
我假设您熟悉stmcube mx项目创建过程,并了解必要的步骤。如果没有,那就使用简单的教程
定时器3和4是独立的,他们不碰撞任何其他外围功能。所以使用它们很好。我在项目/教程中使用Timer 4。
我正在使用内部时钟源,所以在计时器设置中选中这个复选框。我使用定时器4,通道1 pwm输出,所以我选择了通道1。通道1对应stm32f103单片机的PB6。右边给出了设置图。
计算1Hz频率和50%占空比pwm信号输出的值
在最后的定时器设置,是时候输入计数器周期/Pwm分辨率(步骤),预分压器值和所需脉冲。脉冲是所需的占空比,在我们的情况下占空比为50%。让我们根据上面给出的pwm计算公式来求解上面的公式。
给定的值:
定时器输入时钟= 0.0625Mhz或62500Hz
所需频率= 1hz(在时域1秒)
计数器周期/Pwm分辨率(步骤)= 3906(我选择了一个随机值)
计数器频率=所需频率*计数器周期
计数器频率= 1Hz * 3906 =3906 Hz
定时器预调用值=(定时器输入时钟/计数器频率)-1
定时器预调用值=(62500 Hz / 3906 Hz) - 1= 15
现在我们有两个值的定时器prealler值,计数器周期/Pwm分辨率(步骤),也在16位范围内。现在在定时器4配置中输入值。我选择计数器处于UP模式(计数为0到3906)。脉冲是占空比,在我们的例子中占空比是50%,所以3906*50% > 3906*0.5 = 1953。
点击这里观看项目视频…
了下:188金宝搏提款有问题吗,188appcob