21ic问答首页 - GD32E230 串口1 PA2 PA3无法使用
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
请教一下有没有人知道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
评论
2024-11-20
赞0
评论
2024-11-20
赞0
评论
2024-11-20
赞0
评论
2024-11-20
赞0
评论
2024-11-20
赞0
评论
2024-11-14
赞0
评论
2024-11-14
赞0
评论
2024-11-14
您需要登录后才可以回复 登录 | 注册