初级会员

- 积分
- 147
- 金钱
- 147
- 注册时间
- 2016-11-4
- 在线时间
- 27 小时
|
2金钱
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次能输出.
|
最佳答案
查看完整内容[请看2#楼]
感谢大家的热情帮助,问题解决了.不是程序问题,刚刚从测试部门借了个示波器查看发现 RX 引脚,发送数据前后都是低电平,只有数据发送的时候会是高.外接上拉电阻后问题解决.只是非常奇怪 为何会出现这样的现象.有待进一步深究,至于串口数据在芯片不同接口间转发,我个人觉得,只要波特率与中断控制的合理这不是问题的. 例如我的 串口 2将数据转发给串口1 串口2的中断优先级必须高于串口1,波特率 串口1的必须高与串口2.
|