问答

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

21ic问答首页 - GD32E230 串口1 PA2 PA3无法使用

GD32E230 串口 PA 使用 pi

GD32E230 串口1 PA2 PA3无法使用

fanxiaochong2024-11-14
GD32E230的datasheet中可以看到PA2和PA3是可以复用到USART1的,然后使用官方的例程,将官方例程默认引进从串口0中的PA9、PA10可以打印。

请教一下有没有人知道PA2、PA3怎么当串口1使用?

以下是官方例程,我将引脚宏定义改成PA2和PA3, 串口0也改为了串口1:

usart.h文件
#define Print_GPIO_RCU                        RCU_GPIOA           //串口对应GPIO端口的时钟
#define Print_USART_RCU                            RCU_USART1           //对应串口号的时钟


#define Print_GPIO                            GPIOA               //串口对应GPIO端口
#define Print_GPIO_AF                      GPIO_AF_1      //串口是GPIO引脚的复用功能1(查询芯片数据手册)
#define Print_TX_PIN                                GPIO_PIN_2     //串口对应的GPIO引脚
#define Print_RX_PIN                        GPIO_PIN_3     //串口对应的GPIO引脚
#define Print_USART                                   USART1         //print所使用的串口1


usart.c文件
//串口打印初始化
void usart_print_init(void)
{
    usart_print_gpio_init();
    usart_print_config();
}

/*!
    \brief      initilize the com GPIO
    \param[in]  none
    \param[out] none
    \retval     none
*/
void usart_print_gpio_init(void)
{
    /* enable Print GPIO clock */
    rcu_periph_clock_enable(Print_GPIO_RCU);

    /* connect port to USARTx_Tx */
    gpio_af_set(Print_GPIO, Print_GPIO_AF, Print_TX_PIN);

    /* connect port to USARTx_Rx */
    gpio_af_set(Print_GPIO, Print_GPIO_AF, Print_RX_PIN);

    /* configure USART Tx as alternate function push-pull */
    gpio_mode_set(Print_GPIO, GPIO_MODE_AF, GPIO_PUPD_PULLUP, Print_TX_PIN);
    gpio_mode_set(Print_GPIO, GPIO_MODE_AF, GPIO_PUPD_PULLUP, Print_RX_PIN);

    /* configure USART Rx as alternate function push-pull */
    gpio_output_options_set(Print_GPIO, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, Print_TX_PIN);
    gpio_output_options_set(Print_GPIO, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, Print_RX_PIN);
}

/*!
    \brief      initilize the USART configuration of the com
    \param[in]  none
    \param[out] none
    \retval     none
*/
void usart_print_config(void)
{
    /* enable USART clock */
    rcu_periph_clock_enable(Print_USART_RCU);

    /* USART configure */
    usart_deinit(Print_USART);
    usart_word_length_set(Print_USART, USART_WL_8BIT);
    usart_stop_bit_set(Print_USART, USART_STB_1BIT);
    usart_parity_config(Print_USART, USART_PM_NONE);
    usart_baudrate_set(Print_USART, 115200U);
    usart_receive_config(Print_USART, USART_RECEIVE_ENABLE);
    usart_transmit_config(Print_USART, USART_TRANSMIT_ENABLE);

    usart_enable(Print_USART);

}  



并且,我将usart.h文件中的宏改为以下,串口0的PA8 PA9就可以正常打印输出了,不知道为什么配置串口1就不行,并且我查看了复用关系都是为1;
#define Print_GPIO_RCU                        RCU_GPIOA           //串口对应GPIO端口的时钟
#define Print_USART_RCU                        RCU_USART0           //对应串口号的时钟


#define Print_GPIO                    GPIOA                               //串口对应GPIO端口
#define Print_GPIO_AF           GPIO_AF_1              //串口是GPIO引脚的复用功能1(查询芯片数据手册)
#define Print_TX_PIN                    GPIO_PIN_9             //串口对应的GPIO引脚
#define Print_RX_PIN             GPIO_PIN_10             //串口对应的GPIO引脚
#define Print_USART                    USART0                 //print所使用的串口1









回答 +关注 0
4379人浏览 8人回答问题 分享 举报
8 个回答

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