问答

汇集网友智慧,解决技术难题

21ic问答首页 - APM32F103VC串口通信问题

MUC 国产芯片 APM32F103 串口通信 VC串口 ar

APM32F103VC串口通信问题

thinkdream2025-05-14
本帖最后由 thinkdream 于 2025-5-14 10:15 编辑

写个pelco-d的处理程序从USART2收数据判断执行,并通过USART1再输出。程序如下:
  1. void USART2_Isr(void)
  2. {
  3.     uint8_t receivedByte;
  4.     // 检查是否接收到数据
  5.     if (USART_ReadIntFlag(USART2, USART_INT_RXBNE))
  6.     {

  7.         receivedByte = (uint8_t)USART_RxData(USART2);  // 读取接收到的数据,低8位
  8.         USART_TxData(USART1, receivedByte); // 将接收到的数据发送到 USART1
  9.         // 存储数据到缓冲区
  10.         if (pelcoIndex2 < PELCO_D_FRAME_SIZE)
  11.         {
  12.             pelcoBuffer2[pelcoIndex2++] = receivedByte;

  13.             // 检查是否接收到完整帧
  14.             if (pelcoIndex2 == PELCO_D_FRAME_SIZE)
  15.             {
  16.                 pelcoIndex2 = 0;       // 重置接收索引

  17.                 // 调用 PELCO-D 数据帧处理函数
  18.                 parse_pelcod_command(pelcoBuffer2);
  19.             }
  20.         }
  21.         USART_ClearIntFlag(USART2, USART_INT_RXBNE);
  22.     }
  23. }


实际发送数据(HEX):ff 01 00 14 0f 0f 13

USART2实际收到(断点获取):ff 01 00 28 1f 1f 27

部分数据向左移动一位
USART1实际推出:ff c1 c0 d4 cf cf c3

部分数据高两位变为1

是什么问题?如何解决
回答 +关注 4
8050人浏览 7人回答问题 分享 举报
7 个回答

您需要登录后才可以回复 登录 | 注册