新手入门
- 积分
- 16
- 金钱
- 16
- 注册时间
- 2016-5-4
- 在线时间
- 2 小时
|
5金钱
新手求助,我想做串口1,2实时收发,就是串口1发送给串口2接收,同时串口2也能发送给串口1接收。可目前代码只能实现串口2发送给串口1,串口1发送给串口2就卡住了,请问到底是什么错误?谢谢[mw_shl_code=c,true]void Uart1_PutChar(u8 ch)
{
USART_SendData(USART1, (u8) ch);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) == RESET);
}
void Uart2_PutChar(u8 ch)
{
USART_SendData(USART2, (u8) ch);
while(USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET);
}
[/mw_shl_code]
[mw_shl_code=applescript,true]
void USART1_IRQHandler(void) //ÔúÖD¶Ï·tÎñ3ìDòÖD£¬óéóúÖ÷»úÏìó|ÖD¶Ïê±2¢2»ÖaμàêÇÄĸöÖD¶ÏÔ′·¢3öÖD¶ÏÇëÇó£¬òò′˱ØDëÔúÖD¶Ï·tÎñ3ìDòÖD¶ÔÖD¶ÏÔ′½øDDÅD±e£¬è»oó·Ö±e½øDD′|àí¡£μ±è»£¬èç1ûֻ鿼°μ½ò»¸öÖD¶ÏÇëÇó£¬êÇ2»óÃ×öéÏêöÅD±eμÄ¡£μ«êÇÎTÂÛê2Ã′Çé¿ö£¬×öéÏêöÅD±eêǸöoÃϰ1ß
{
if(USART_GetITStatus(USART1, USART_IT_RXNE) != RESET) //èô½óêÕêy¾Y¼Ä′æÆ÷Âú
{
comm = USART_ReceiveData(USART1); //′Ëóï¾ä×÷óão½«USART_DR¼Ä′æÆ÷μÄÄúèY′«μ½commàï¡£áíía,Ôúμ¥»o3åÆ÷Ä£ê½Ï£¬èí¼t¶áUSART_DR¼Ä′æÆ÷Ôòíê3é¶ÔRXNEλÇå3y¡£[×¢òa]Ôú¶à»o3åÆ÷Ä£ê½Ï£¬±ØDëí¨1yèí¼tÇåáã"′«êäíê3é±êÖ¾"DMA1_FLAG_TCx(¼′£oáîDMA_IFCRμÄλCTCIFx=1)£¬·ñÔò½«»áÎT·¨ìø3öÖD¶Ï·tÎñ3ìDò£¬3öÏÖò»′ÎÖD¶ÏÇëÇóÎTêy′ÎÏìó|μÄoó1û
Uart2_PutChar(comm);
// if(comm == 0x63) //éÏλ»ú×Ô¶ˉ2éÕò2é¼ˉÆ÷êÇ·ñÔúÏß
// {
// comm = 0;
// Uart1_PutChar(0x63); //·¢ËíCPμÄASCIIÂë
// Uart1_PutChar(0x70);
// }
}
}
void USART2_IRQHandler(void)
{
RX_status = USART_GetFlagStatus(USART2, USART_FLAG_RXNE);
if(RX_status == SET)
{
USART_ITConfig(USART2, USART_IT_RXNE, DISABLE); //1ØÖD¶Ï
// if(j==1){GPIO_ResetBits(GPIOD, GPIO_Pin_6); j=0;}
// else if(j==0){GPIO_SetBits(GPIOD, GPIO_Pin_6); j=1;}// D3áá
temp = USART_ReceiveData(USART2); //½óêÕêy¾Y»o3å
Uart1_PutChar(temp);
USART_ITConfig(USART2,USART_IT_RXNE, ENABLE);
}
}
int main(void)
{
// SystemInit(); //μ÷óÃsystem_stm32f10x.c¿aoˉêyμÄÏμí3ê±ÖóÅäÖÃ
Stm32_Clock_Init(9); //Ïμí3ê±ÖóéèÖÃÎa9±¶Æμ£¬¼′Ïμí3ê±ÖóéèÖÃÎa72MHz
delay_init(72); //Ïμí3SysTick3õê¼»ˉ
ALL_GPIO_Config(); //ÅäÖÃËùóDGPIO
NVIC_Configuration();//ÖD¶ÏóÅÏè¼¶
USART1_Config(); //′®¿ú1ÅäÖÃ
USART2_Config();//′®¿ú2ÅäÖÃ
// USART_ITConfig(USART2, USART_IT_RXNE, DISABLE); //1ØÖD¶Ï
Uart2_PutChar(comm);
GPIO_SetBits(GPIOC, GPIO_Pin_6);// D1áá
while(1)
{
}
}[/mw_shl_code]
|
|