STM8S207C8T6,串口收发问题(库函数版本),接收不正常

2019-07-19 20:29发布

void UART_Initializes(void)//初始化函数
{
  UART1_Init((uint32_t)115200, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO, UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE);
  UART1_Cmd(ENABLE);
  UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE);

  enableInterrupts();
}
//接收
INTERRUPT_HANDLER(UART1_RX_IRQHandler, 18)
{
  u8 temp;
  RecvCount = 0;  while(UART1_GetITStaues(UART1_IT_RXNE) != RESET)
{
  RecvBuf[RecvCount] = UART1_ReceiveData8();                   //读取接收到的数据(该操作会自动清除中断接收标志)
  RecvCount++;
  TIMDelaNms(5);
}
  TIMDelaNms(5);
  UART1_SendNByte(RecvBuf,RecvCount);                         //发送接收到的数据
  UART1_ClearITPendingBit(UART1_IT_RXNE);
}
发送函数是没有问题的,只能接收最多2Byte
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
HXYDJ
1楼-- · 2019-07-19 20:56
你的代码 串口中断每次进去之后 RecvCount = 0;这行代码就把数组下标变成0了,所以每次接收的数据都会放在数组第0位,后面接收的数据就会把前面的数据覆盖。
HXYDJ
2楼-- · 2019-07-20 00:08
接收中断里面不能有延时,延时可能会漏掉数据。
qq455738812
3楼-- · 2019-07-20 04:28
 精彩回答 2  元偷偷看……
qq455738812
4楼-- · 2019-07-20 06:26
HXYDJ 发表于 2018-3-26 16:27
你的代码 串口中断每次进去之后 RecvCount = 0;这行代码就把数组下标变成0了,所以每次接收的数据都会放在 ...

谢谢了兄dei

一周热门 更多>