u16 led0pwmval=0;
u8 dir=1;
u16 maxled0pwmval;
void CHENGE_LED(void);
void CHENGE_LED_init(u16 maxpwmval);
int main(void)
{
delay_init(); //延时函数初始化
NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
usmart_dev.init(SystemCoreClock/1000000); //初始化USMART
uart_init(9600);//
//配置USART1中断优先级
//串口初始化为9600
LED_Init(); //LED对应的I/O端口初始化
TIM3_PWM_Init(899,0); //APB1预分频系数为不为1。则频率*2。PWM频率=72000000/900=80Khz
TIM4_Int_Init(4999,7199);//使能TIM3时钟//TIME2用来USMART的扫描函数,TIME3用来PWM了,所以本工程中所有TIME3->TIME4
//TIM3初始化,计数到5000为500ms ,10Khz的计数频率,
//TIM3中断使能,TIM3中断优先级设置,使能TIM3,
看这里!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
CHENGE_LED_init(50);//此函数的必要性,原来只需要CHENGE_LED(u16 maxled0pwmval);在WHILE()主循环里面,效果仅限于一个周期
//这里添加CHENGE_LED_init(50)然后把CHENGE_LED()放在主循环外面,调试时候调试CHENGE_LED_init()就OK了
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
while(1)
{
delay_ms(10);
// if(dir)led0pwmval++;
// else led0pwmval--;
//
// if(led0pwmval>100)dir=0;
// if(led0pwmval==0)dir=1;
// TIM_SetCompare2(TIM3,led0pwmval);//修改TIME3_CCR2设置占空比
CHENGE_LED();
}
}
void CHENGE_LED()
{
if(dir)led0pwmval++;
else led0pwmval--;
if(led0pwmval>maxled0pwmval)dir=0;
if(led0pwmval==0)dir=1;
TIM_SetCompare2(TIM3,led0pwmval);//修改TIME3_CCR2设置占空比
}
void CHENGE_LED_init(u16 maxpwmval)
{
maxled0pwmval=maxpwmval;
}
CHENGE_LEDCHENGE_LEDCHENGE_LEDCHENGE_LED
|