void USART2_IRQHandler(void)
{
if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)//接收到数据
{
USART_SendData(USART1, USART_ReceiveData(USART2) ); //Debug 有时候会出现不输出数据的现象
USART2_RX_BUF[USART2_REC_num] = USART_ReceiveData(USART2); //接收字符存入 BUF
USART2_REC_num ++;
if( USART2_REC_num > USART2_MAX_REC_LEN )
USART2_REC_num = 0;
}
}
非常简单的一个 串口2接收数据转发到 串口1.
问题就出在 USART_SendData(USART1, USART_ReceiveData(USART2) ); //Debug 有时候会出现不输出数据的现象
但最奇怪的是 buf 中却有数据,也就是说 串口2接收数据是正常的.但确没有转发出来.
求解, 有检查中断优先级 串口2的优先级高于串口1
串口1 只接收数据,通过串口调试助手查看. 10次 会有 1-2次能输出.
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
看的我头晕……
中断嵌套……哥……你别这么玩好不……
没有见过你这样写的。
你可以把USART_SendData(USART1, USART_ReceiveData(USART2_RX_BUF[x]) ); ---这个处理放到main的while里去。
在main的whlie里检查 当uart2空闲的时候再在用串口1发送。
一周热门 更多>