|
ARM程序中,如果不用延时,就没法运行,但又不是硬件延时的奇怪问题。[
[复制链接]
问题出在在现有的LCD汉字显示驱动的基础上继续开发时。
有个一个搜索函数,代码如下,功能是在一个给定的地址开始,连续搜索一个汉字编码(2byte),找到编码就返回位置,函数很简单。
现在的问题是,如果去掉串口调试代码 s_UartPrint("..."); 这一行,调用这个函数就会出现数据异常(DataAbort),加上就一切正常,感觉这行代码在这里的作用应该是有一个延时作用,但不知道为什么会这样,请大侠们指教。分析一下可能的问题。
经过调试,发现如果将s_UartPrint("...")这行加在调用这个函数之前,也能正常运行,很奇怪,去掉就不行了。
int strSearch(unsigned char* StartAddr, unsigned char* str, int strNum)
{
unsigned char* pAddr = StartAddr;
int i;
//s_UartPrint("...");// 影响运行成功与否的关键一句
for (i=0; i
{
if (*pAddr == *str && *(pAddr+1) == *(str+1))
{
return i;
}
pAddr += 2;
}
return -1;
}
|
|