- #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文件),请帮忙分析一下。
|