STM32F103配置一个PWM输出的程序是什么?

STM32F103配置一个PWM输出的程序是什么?,第1张

上桥臂PWM输出,下桥臂常闭。你要是做电机的话这个就会好理解了。

用库函数不是有个TIM_CCxN配置的函数。给TIM_CCx配置一个CCR的值。把互补通道这个关掉就好了。

脉冲宽度调制(PWM),是对脉冲宽度的控制。

STM32 的定时器除了 TIM6 和 7。其他的定时器都可以用来产生 PWM 输出。其中高级定时器 TIM1 和 TIM8 可以同时产生多达 7 路的 PWM 输出。而通用定时器也能同时产生多达 4路的 PWM 输出,这样, STM32 最多可以同时产生 30 路 PWM 输出!

本实验是利用 TIM3 的通道 2,把通道 2 重映射到 PB5, 产生 PWM 来控制 DS0 的亮度。

TIM3_CH2 默认是接在 PA7上面的,而我们的 DS0 接在 PB5 上面,可以通过重映射功能,把 TIM3_CH2映射到 PB5 上。

初始化子程序中:

1、将16#C3(或16#CB)送入SMW67(SMW77)。

2、向SMW68(SMW78)写入所希望的周期值。

3、向SMW7(SMW80)写入所希望的脉宽值。

4、执行PLS *** 作。

5、子程序返回。

扩展资料:

PWM输出实验步骤

1、使能定时器3和相关IO口时钟

使能定时器3时钟:RCC_APB1PeriphClockCmd()

使能GPIOB时钟:RCC_APB2PeriphClockCmd()

2、初始化IO口为复用功能输出。函数:GPIO_Init()

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP

3、要把PB5用作定时器的PWM输出引脚,所以要重映射配置,

所以需要开启AFIO时钟。同时设置重映射。

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE)

GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3, ENABLE)

4、初始化定时器:ARR,PSC等:TIM_TimeBaseInit()

5、初始化输出比较参数:TIM_OC2Init()

6、使能预装载寄存器: TIM_OC2PreloadConfig(TIM3, TIM_OCPreload_Enable)

7、使能定时器。TIM_Cmd()

8、不断改变比较值CCRx,达到不同的占空比效果:TIM_SetCompare2()

/*s52,12M晶振,P30输出PWM,P10按键控制输出*/

#include<reg52.h>

sbit control=P1^0

sbit pwm=P3^0

void delay()

{

unsigned char i,j

for(i=0i<10i++)

for(j=0j<112j++)

}

main()

{

unsigned char flag=1

TMOD=0x02//定时器0方式2自动载入;

TH0=0xe3//28us定时,即28us翻转一次;周期为56us,频率约为18K

TL0=0xe3

EA=1

ET0=1

TR0=1

while(1)

{

if(control==0)

{

delay()

if(control==0)

{

flag=~flag

switch(flag)

{

case 0:TR0=0EA=0pwm=0

break

case 1:EA=1TR0=1

}

}

}while(control==0)

}

}

void timer0()interrupt 1

{

pwm=~pwm

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12203266.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-21
下一篇 2023-05-21

发表评论

登录后才能评论

评论列表(0条)

保存