中级会员
- 积分
- 462
- 威望
- 241
- 贡献
- 137
- 兑换币
- 139
- 注册时间
- 2014-11-13
- 在线时间
- 42 小时
- 毕业学校
- 未毕业
|
#include "led.h"
#include "pit.h"
int main(void)
{
int counter = 0;
uint8 i=0;
#if (CONSOLE_IO_SUPPORT || ENABLE_UART_SUPPORT)
printf("Hello World in C from MCF52259 derivative on MCF52259 board\n\r");
fflush(stdout);
#endif
led_init();
pit_init(0);
for(;;) {
counter++;
switch(i)
{
case 0:
led_on(1);
delay_s(80000,0,1);
i++;
break;
case 1:
led_on(2);
delay_s(80000,0,1);
i++;
break;
case 2:
led_on(3);
delay_s(80000,0,1);
i++;
break;
case 3:
led_on(4);
delay_s(80000,0,1);
i++;
break;
case 4:
led_off(4);
delay_s(80000,0,1);
i++;
break;
case 5:
led_off(3);
delay_s(80000,0,1);
i++;
break;
case 6:
led_off(2);
delay_s(80000,0,1);
i++;
break;
case 7:
led_off(1);
delay_s(80000,0,1);
i=0;
break;
default:
break;
}
}
}
这是主函数。。。。下面是主函数中调用的函数
void stop_pit(uint8 channel)
{
MCF_PIT_PCSR(channel)&=~MCF_PIT_PCSR_EN;
}
void delay_s(uint32 sysClkKhz,uint8 channel, uint8 s)
{
MCF_PIT_PMR(channel)=1000*s*sysClkKhz/2/16384-5;
start_pit(channel);
while( (MCF_PIT_PCSR(channel)&MCF_PIT_PCSR_PIF)==0);
MCF_PIT_PCSR(channel)|=MCF_PIT_PCSR_PIF;
stop_pit(channel);
}
这个调用函数我将 MCF_PIT_PMR(channel)=1000*s*sysClkKhz/2/16384-5; 这一行的1000去掉,怎么LED灯亮的时间间隔不变,而且我注释掉 MCF_PIT_PCSR(channel)|=MCF_PIT_PCSR_PIF; stop_pit(channel);这两行,对程序没什么影响。。。求解。。。新手第一次发帖求助。。。。
|
|