初级会员

- 积分
- 51
- 金钱
- 51
- 注册时间
- 2015-5-31
- 在线时间
- 0 小时
|
5金钱
我的话以及进行了delay_init(); 而且我在下面的while(1)里面首先用delay_ms(10);这个是完全可以过去的,然后我调用这个函数pwm_led()做呼吸灯,发现就会卡在delay_ms(10),设置断点也调不出来,
void pwm_led(void)//呼吸灯开的时候,以非常快的速度开-关-开-关,并逐渐加大开的时间比率,减小关的时间比率。
{
uint8_t time, i;//相当于白+黑 = 灰,你必须有亮跟灭才会有中间态。
time = 0;
for(i = 0; i < 255; i++) //LED2 变亮
{
LEDB(ON); //点亮 LED
delay_ms(time);//用 time 延时,开始为 0,自加 1 慢慢变大,原先用的是us
LEDB(OFF); //灭掉 LED
time = ~time; //求反 例如:1110 求反是 0001
delay_ms(time); //用求反后的 time 延时,开始为 255 慢慢变小,没求反时自加 1 相当于求反后自减 1
time = ~time; //再求反得到原来的 time 变量
time = time + 1; //time 自加 1 ,当 time = 1111 时,加 1 后重新变成 0000
}
time = 0;
for(i = 0; i < 255; i++) //LED 变暗
{
LEDB(OFF); //灭掉 LED
delay_ms(time); //用 time 延时,开始为 0,自加 1 慢慢变大
LEDB(ON); //点亮 LED
time = ~time; //求反 例如:1110 求反是 0001
delay_ms(time); //用求反后的 time 延时,开始为 255 慢慢变小,没求反时自加 1 相当于求反后自减 1
time = ~time; //再求反得到原来的 time 变量
time = time + 1; //time 自加 1 ,当 time = 1111 时,加 1 后重新变成 0000
}
}
|
|