上桥臂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 上。
STC12C56xxAD芯片用pwm调速程序的代码如下:
sbit k1=P3^4;
sbit k2=P3^5;
void delay(unsigned int cnt)
{
unsigned char i;
for(;cnt>0;cnt--)
for(i=0;i<250;i++);
}
void main()
{
CCON=0; //PCA初始化
CL=0; //PCA的16位计数器低八位
CH=0; //PCA的16位计数器高八位
CMOD=0x00; //选择 系统时钟/12 为计数脉冲,则PWM的频率f=sysclk/256/12;
CCAP0H=0x80; // 占空比控制
CCAP0L=0x80;
PCA_PWM0=0x00; //控制占空比的第九位为0
CCAPM0=0x42; //允许P13作为PWM输出
CR=1; //启动PCA计数器
while(1)
{
if(k1==0)
{
delay(200);
while(k1==0);
CCAP0H+=5; //占空比调节
CCAP0L+=10;
}
if(k2==0)
{
delay(200);
while(k2==0);
CCAP0H-=5; //占空比调节
CCAP0L-=5;
}
}
}
#ifndef __PWM__H__
#define __PWM__H__
void pwm_ccp1(unsigned char a,unsigned char b);
void pwm_ccp2(unsigned char a,unsigned char b);
#endif
void pwm_ccp1(unsigned char a,unsigned char b) //左边PWM
//CCP1 模块的 PWM 工作方式,周期为(b+1)4Tosc(TMR2前分频值)=b+1 us //pwm高电平=a:CCP1CON(第四五位)Tosc(TMR2前分频值)
//pwm高电平=a:CCP1CON(第四五位)Tosc(TMR2前分频值)
{ //a>b时有最高转速
CCPR1L=a; // 设置工作循环的高 8bit 为 a
CCP1CON=0X0C; //0000 1100 设置 CCP1 为 PWM 工作方式,且工作循环的低 bit2 为 11/
CCP1IE=0;; // 禁止总中断和外围中断 /
PR2=b; // 设置 PWM 周期 /
TRISC2=0; // 设置 RC2/CCP1 为输出 /
T2CON=0X04; // 0000 1000前分频比为 1:1 ,后分频器1:2,打开 TMR2 ,同时输出 PWM 信号 /
}
void pwm_ccp2(unsigned char a,unsigned char b) //右边PWM
//CCP2 模块的 PWM 工作方式,周期为(b+1)4Tosc(TMR2前分频值),
//pwm高电平=a:CCP2CON(第四五位)Tosc(TMR2前分频值)
{
CCPR2L=a; // 设置工作循环的高 8bit 为 a
CCP2CON=0X0C; // 设置 CCP2 为 PWM 工作方式,且工作循环的低 bit2 为 11/
CCP2IE=0; // 中断屏蔽
PR2=b; // 设置 PWM 周期 /
TRISC1=0; // 设置 RC1/CCP2 为输出 /
T2CON=0X04; // 前分频比为 1 ,打开 TMR2 ,同时输出 PWM 信号 /
}
第一,要理解中断在这里的作用是固定的“一小段”时间进入一次。
第二,PWM_ON在程序中的作用很大,它会由0------>CYCLE------>0并且一直循环下去。可以把它看成一个有规律的变化的量。
第三,每进入中断一次count++,满足条件count==PWM_ON或count==CYCLE时改变LED的当前状态。作用是给小灯亮或灭的时间不同。
第四,LED的亮度与其通电时间有关,也可以说成是占空比。上面的条件要理解成是呈线性增加或减小的频率。可以理解成三角波,对应的面积就是通电时间。
不知能不能给你讲明白!
以上就是关于STM32F103配置一个PWM输出的程序是什么全部的内容,包括:STM32F103配置一个PWM输出的程序是什么、STC12C56xxAD芯片怎么用pwm调速程序、PIC单片机输出PWM波的C语言源程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)