#include "led.h"
static u8 lastOut = 0;
//就是这个lastOut变量,原来是定义在函数 LedDisplay 里面的
//发现开机时在以下【BUG的地方】明显停留过长的时间(Output一直为0),这个现象通过LED直接能观察到,不用仿真器
//就好像static u8 lastOut = 0;这句失效了的效果,并没有初始化为0,感觉被初始化成200以上的值
//现在我把他移到函数之外,就正常了,看不到那个BUG现象了
//LedDisplay 函数是定时调用的
//LED显示
void LedDisplay (void)
{
if(Output)
{
SET_PORTx_DIR(B,(1 << 1),1); //这是IO口操作宏定义
if(lastOut < 13)
{
LED_OUT(1); //这是IO口操作宏定义
}
else
{
LED_OUT(t_06ms & 1); //这是IO口操作宏定义
}
}
else
{
if(lastOut)
{
SET_PORTx_DIR(B,(1 << 1),0); //这是IO口操作宏定义 【BUG的地方】
}
else
{
SET_PORTx_DIR(B,(1 << 1),1); //这是IO口操作宏定义
}
LED_OUT(0); //这是IO口操作宏定义
}
if(Output)
{
if(lastOut < 13) lastOut++;
}
else if(lastOut)
{
lastOut--;
}
}
你好,非常感谢这么关注我的问题,这是相关源码(整个工程有多个C文件),请帮忙分析一下。 |