问题
在使用过程中,不知道为啥定义的字符串指针传递给一个函数,函数对指针进行串口打印,但是下一次打印的时候,出现了打印不出来的问题。
//调用的地方
int main(void)
{
uint8_t *string="Hellow world!\n";//定义了一个字符串
Hardware_Init.System_Init();
while(true)
{
UART1.SendString(string);//传递指针
Public.Delayms(1000);
P34=~P34;
}
}
SendString函数是向串口发送字符串
//向串口发送字符串
static void SendString(uint8_t *str)
{
while(*str)
{
UART1.SendByte(*(str++));
}
while(UART1.Tx_Busy_Flag==true);
}
串口打印只能接收到第一次发送。后面没有发送。
分析
通过仿真调试发现是形参指针往后遍历,传参指针也跟着遍历了。
解决
通过将代码优化设置等级为0后可以正常运行,可能是C51编译器问题。
设置之后能正常运行