ESP8266与单片机usart1相连,通过手机APP给WiFi发1和0的十六进制
在串口1 中断函数中将其存在全局变量Temp中。
我在网上找了串口打印的重定义,将printf 用usart3打印输出然后通过串口助手在电脑上显示,但是我printf在main 的while(1)中打印串口助手显示1或0;而在串口一的中断中打印就出现了错误
以下是部分代码,其他地方是串口初始化
/******usart1中断**********/
void USART1_IRQHandler()
{
if(USART_GetITStatus(USART1,USART_IT_RXNE)!=RESET)
{
USART_ClearFlag(USART1,USART_IT_RXNE);
//UART1Test();
// USART_ClearITPendingBit(USART1,USART_IT_RXNE); //清除中断标志
Temp = USART_ReceiveData(USART1);
// printf (" \n %d \n",Temp );
}
/*******main函数**********/
int main(void)
{
SystemInit(); /* 配置系统时钟为 72M */
Usart1_Init(); //USART1 配置
Usart3_Init(); //USART3 配置
USART1_SendString((u8*)" AT\r\n");
DelayNmS(1000);
USART1_SendString((u8*)"AT+CWMODE=2\r\n");
DelayNmS(1000);
USART1_SendString((u8*)"AT+RST\r\n");
DelayNmS(5000);
USART1_SendString((u8*)"AT+CIPMUX=1\r\n");
DelayNmS(2000);
USART1_SendString((u8*)"AT+CIPSERVER=1,5050\r\n");
DelayNmS(2000);
USART1_SendString((u8*)"AT+CIPSEND=\r\n");
DelayNmS(2000);
while (1)
{
printf (" \n %d \n",Temp );
}
}