大家好,
我正在使用 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 有任何想法请分享。