ST意法半导体
直播中

juju宇哥

9年用户 1426经验值
擅长:479809
私信 关注
[问答]

为什么使用stm8s001j3控制器无法接收数据呢

大家好,
我正在使用 stm8s001j3 控制器,PA1 和 PA3 通过使用重映射用作 UART 通信。我能够发送数据但无法接收数据。UART配置是
   GPIO_DeInit(GPIOD);
GPIO_Init(GPIOD, GPIO_PIN_6, GPIO_MODE_IN_PU_NO_IT);
  GPIO_Init(GPIOA, GPIO_PIN_3,
      GPIO_MODE_OUT_OD_HIZ_FAST);
UART1_Init((uint32_t)9600,UART1_WORDLENGTH_8D,UART1_STOPBITS_1,UART1_PARITY_NO,
          UART1_SYNCMODE_CLOCK_DISABLE, UART1_MODE_TXRX_ENABLE);
/* 启用 UART 接收中断:当 UART
  接收数据寄存器不为空 */
UART1->BRR1 = 0x68;
  UART1->CR2 = 0x2C;
/* 启用 UART */
UART1_Cmd(启用);
启用中断();
中断_处理程序(UART1_RX_IRQHandler,18)
{
/* 为了检测开发过程中的意外事件,
   建议在以下指令上设置断点。
*/
/* 从接收数据寄存器中读取一个字节并发回 */
如果(UART1->SR & 0x20)
{
  char temp = UART1->DR;
    while(!(UART1->SR & 0x80));
    UART1->DR = 温度;
}
}
或者
我在主 while(1) 循环中尝试了以下逻辑
如果(UART1_GetFlagStatus(UART1_FLAG_RXNE)!= 0)
   {
     ch = UART1_ReceiveData8();
     UART1_ClearFlag(UART1_FLAG_RXNE);
    而 (UART1_GetFlagStatus(UART1_FLAG_TXE) == RESET)
    {
    }
     UART1_SendData8(ch + 0x30);
   }
任何人对 UART 有任何想法请分享。


回帖(1)

建立建利12

2022-12-1 11:33:01
数据表声称:
“通过将 UART1_TX(AFR0=1 和 AFR1=1)重新映射到 PA3,PD6 上的 UART1_RX 备用功能变得不可用”
这可能是你问题的根源。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分