高级会员

- 积分
- 934
- 金钱
- 934
- 注册时间
- 2017-4-8
- 在线时间
- 111 小时
|
发表于 2017-6-13 23:35:19
|
显示全部楼层
设置CCRX的值来实现占空比的改变,是连续变化的,高电平和低电平的相对时间的变化也是连续改变的,亮和灭的转换也是连续的,加上人眼睛的视觉残留现象就会感觉LED的亮度在变化。
int main(void)
{
u16 led0pwmval=0;
u8 dir=1;
delay_init(); //延时函数初始化
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //设置 NVIC 中断分组 2
uart_init(115200); //串口初始化波特率为 115200
LED_Init(); //LED 端口初始化
TIM3_PWM_Init(899,0); //不分频,PWM 频率=72000/900=80Khz
while(1)
{
delay_ms(10);
if(dir)led0pwmval++;
else led0pwmval--;
if(led0pwmval>300)dir=0;
if(led0pwmval==0)dir=1;
TIM_SetCompare2(TIM3,led0pwmval);
}
}
led0pwmval 这个值设置为 PWM 比较值,也就是通过 led0pwmval 来控制 PWM 的占空比,然后控制 led0pwmval 的值从 0 变到 300,然后又
从 300 变到 0,这个值就是CCRX的值,在循环里一直变化的。以上为个人理解。 |
|