斯文 发表于 2024-11-13 15:23

USART 可以发送数据,无法接收

按手册的配置好引脚后,USART1 后来又换了USART3使用上位机通信,MCU只能发送数据,没办法接收数据。。实在不知道什么问题了

muyichuan2012 发表于 2024-11-13 18:44

代码没有修改完吧   贴一下代码大家给你看看

zchong 发表于 2024-11-13 21:09

找例程先研究明白再改呗

斯文 发表于 2024-11-13 23:06

老哥们 这是 GPIO跟 USAART3的初始化代码,请老哥们帮忙分析

full_stack 发表于 2024-11-14 00:42

实际测量了接收管脚的波形了吗?某些管脚可能是JTAG模式,类似STM32的GPIO_PinRemapConfig()这个函数。

丙丁先生 发表于 2024-11-14 07:30

是不是上拉电阻?

丙丁先生 发表于 2024-11-14 07:34

以下是一个完整的示例代码片段,展示了如何配置USART3并启用接收功能:

      
c
复制代码
#include "usart.h"
#include "gpio.h"
#include "interrupt.h"

int main(void) {
    // USART3 初始化
    ustart(USART3, CRM_USART3_PERIPH_CLOCK, TRUE);
    gpio_init(GPIOB, &GPIOInitStruct); // 假设USART3的TX和RX分别连接到GPIOB的某些引脚
    gpio_pin_mux_config(GPIOB, GPIO_PIN_SOURCE11, GPIO_MUX_7);
    gpio_pin_mux_config(GPIOB, GPIO_PIN_SOURCE10, GPIO_MUX_7);
   
    // USART3 参数配置
    usart_parameter_struct usart3initstruct;
    usart3initstruct.usart_baudrate = 9600;
    usart3initstruct.usart_mode = USART_MODE_Rx | USART_MODE_Tx;
    usart3initstruct.usart_wordlength = USART_WLEN_8BITS;
    usart3initstruct.usart_stopbits = USART_STOPBITS_1;
    usart3initstruct.usart_parity = USART_PARITY_NO;
    usart3initstruct.usart_hardwareflow = USART_HARDWAREFLOWTH_NONE;
   
    usart_init(USART3, &usart3initstruct);
   
    // 使能USART3
    usart_enable(USART3, ENABLE);
   
    // 使能USART3接收中断
    uart_interrupt_receive_enable(USART3, ENABLE);
    uart_interrupt_receive_flag_clear(USART3, RESET);
    mvic_irq_enable(USART3_IRQn);
    mpri_config(USART3_IRQn, PRIGROUP_PRIO3, 0);
   
    // 主循环
    while (1) {
      // 显示固定文本
      LCD_ShowString(0, 0, "Loc:", 0xffff, 0x0000);
      LCD_ShowString(0, 16, "Lat:", 0xffff, 0x0000);
      
      // 检查是否有数据可读
      if (SET == usart_flag_get(USART3, USART_RDBF_FLAG)) {
            uint8_t RxData = usart_data_receive(USART3);
            UsartSendByte(RxData); // 回显接收到的数据
      }
    }
}

   
请根据上述建议逐一排查问题,并确保所有配置都正确无误。如果问题依然存在,可以尝试逐步简化代码,找出具体的问题所在。

xionghaoyun 发表于 2024-11-14 08:40

uart3中断呢?

斯文 发表于 2024-11-14 11:46

问题解决了,,是配置USARTrx对应的GPIO的时候, 配置成了输入模式,,实际上应该配置复用模式

mbutterfly 发表于 2024-11-14 12:30

斯文 发表于 2024-11-14 11:46
问题解决了,,是配置USARTrx对应的GPIO的时候, 配置成了输入模式,,实际上应该配置复用模式 ...

解决了就好
页: [1]
查看完整版本: USART 可以发送数据,无法接收