两个板子,MINI和F407,MINI用无线模块通过串口发送数据,407用串口4接收数据,再通过串口1发送给电脑,目前已知MINI已成功发送,可是407这边不知是串口4还是串口4哪个出了问题,我感觉要么是串口4的中断服务函数出了问题,要么就是main函数while出了问题,求指导,下载到板子后,LED0长亮。[mw_shl_code=applescript,true]void UART4_IRQHandler(void) //′®¿ú4ÖD¶Ï·tÎñ3ìDò
{
u8 Res;
#if SYSTEM_SUPPORT_OS //èç1ûSYSTEM_SUPPORT_OSÎaÕ棬ÔòDèòaÖ§3ÖOS.
OSIntEnter();
#endif
if(USART_GetITStatus(UART4, USART_IT_RXNE) != RESET) //½óêÕÖD¶Ï(½óêÕμ½μÄêy¾Y±ØDëêÇ0x0d 0x0a½áÎ2)
{
Res =USART_ReceiveData(UART4);//(USART1->DR); //¶á衽óêÕμ½μÄêy¾Y
if((USART_RX_STA&0x8000)==0)//½óêÕÎ′íê3é
{
if(USART_RX_STA&0x4000)//½óêÕμ½áË0x0d
{
if(Res!=0x0a)USART_RX_STA=0;//½óêÕ′íÎó,ÖØD¿aê¼
else USART_RX_STA|=0x8000; //½óêÕíê3éáË
}
else //»1ûêÕμ½0X0D
{
if(Res==0x0d)USART_RX_STA|=0x4000;
else
{
USART_RX_BUF[USART_RX_STA&0X3FFF]=Res ;
USART_RX_STA++;
if(USART_RX_STA>(USART_REC_LEN-1))USART_RX_STA=0;//½óêÕêy¾Y′íÎó,ÖØD¿aê¼½óêÕ
}
}
}
}
#if SYSTEM_SUPPORT_OS //èç1ûSYSTEM_SUPPORT_OSÎaÕ棬ÔòDèòaÖ§3ÖOS.
OSIntExit();
#endif
}
#endif [/mw_shl_code][mw_shl_code=applescript,true]int main(void)
{
u8 t;
u8 len;
u16 times=0;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//éèÖÃÏμí3ÖD¶ÏóÅÏ輶·Ö×é2
delay_init(168); //Ñóê±3õê¼»ˉ
uart_init(9600); //′®¿ú3õê¼»ˉ2¨ìØÂêÎa9600
LED_Init(); //3õê¼»ˉóëLEDᬽóμÄó2¼t½ó¿ú
while(1)
{
if(USART_RX_STA&0x8000)
{
len=USART_RX_STA&0x3fff;//μÃμ½′Ë′νóêÕμ½μÄêy¾Y3¤¶è
printf("
Äú·¢ËíμÄÏûÏ¢Îa:
");
for(t=0;t<len;t++)
{
USART_SendData(USART1, USART_RX_BUF[t]); //Ïò′®¿ú1·¢Ëíêy¾Y
while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//μè′y·¢Ëí½áêø
}
printf("
");//2åèë»»DD
USART_RX_STA=0;
}
else
{
times++;
if(times%5000==0)
{
printf("
ALIENTEK ì½Ë÷ÕßSTM32F407¿a·¢°å ′®¿úêμÑé
");
printf("ÕyμãÔ-×ó@ALIENTEK
");
}
if(times%200==0)printf("Çëêäèëêy¾Y,òÔ»Ø3μ¼ü½áêø
");
if(times%15==0)LED0=!LED0;//éá˸LED,ìáê¾Ïμí3ÕyÔúÔËDD.
delay_ms(10);
}
}
}[/mw_shl_code]
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>