都是庫函數寫的,變量都有定義,只是沒有貼出來,編譯通過,且可以正確輸出串口字符,但是比較字符部分只有調試的時候
會運行到,下載STM32自動運行就沒有比較字符的輸出,很不解,求助
int main(void)
{
int i=0;
SysTick_Init();
RCC_Configuration();
NVIC_Configuration();
GPIO_Configuration();
USART1_Config();
printf(“\r\n please input character from keyboard \r\n”)
for (i=0;i<=strlen(USART_RX_BUF);i++)
{
USART_RX_BUF[i]='\0';
}
while(1)
{
if(m>=22)
printf(“%s”,"\r\n 輸出字符 \r\n”)
printf(“%d”,strlen(USART_RX_BUF));
printf("\r\n”)
for(i=0;i<=strlen(USART_RX_BUF);i++)
{
printf(“%c”,"USART_RX_BUF[i]”);
}
strcpy(string0,"0123456789ABCDFE");
printf(“%d”,strlen(string0));
printf(“%s”,"\r\n 對比字符 \r\n”)
if(strcmp(string0,USART_RX_BUF)>0)
{
printf("\r\n YES \r\n")
}
for (i=0;i<=strlen(USART_RX_BUF);i++)
{
USART_RX_BUF[i]='\0';
}
m=0;
printf("%s","\r\n 比較完成 \r\n")
}
}
------解决思路----------------------
数组作为字符串进行操作, strlen, strcpy, strcmp,一定要注意结束符.
------解决思路----------------------
strlen(USART_RX_BUF)
strlen是从buffer第一个元素开始,碰到\0结束,计算出字符串长度,如果你buffer第一个字节就是\0那么strlen的值就是0。你应该要使用buffer的size来初始化该缓冲区。