GD32E230 PB6、PB7怎么复用成串口0啊
本帖最后由 ya1234 于 2022-9-29 14:18 编辑GD32E230的datasheet中可以看到PB和PB7是可以复用到USART0的,然后使用官方的例程,将官方例程默认引进从PA9、PA10改成PB6、PB7,结果串口就不打印了。用PA9、PA10却可以。请教一下有没有人知道PB6、PB7怎么当串口0使用?以下是官方例程,我将引脚宏定义改成PB6和PB7:/* definition for COM, connected to USART0 */#define EVAL_COM USART0#define EVAL_COM_CLK RCU_USART0 #define EVAL_COM_TX_PIN GPIO_PIN_6#define EVAL_COM_RX_PIN GPIO_PIN_7 #define EVAL_COM_GPIO_PORT GPIOB#define EVAL_COM_GPIO_CLK RCU_GPIOB#define EVAL_COM_AF GPIO_AF_1 /*! \brief configure COM port \paramcom: COM on the board \arg EVAL_COM: COM on the board \param none \retval none*/void gd_eval_com_init(uint32_t com){ uint32_t COM_ID; COM_ID = 0U; /* enable COM GPIO clock */ rcu_periph_clock_enable(EVAL_COM_GPIO_CLK); /* enable USART clock */ rcu_periph_clock_enable(COM_CLK); /* connect port to USARTx_Tx */ gpio_af_set(EVAL_COM_GPIO_PORT, EVAL_COM_AF, COM_TX_PIN); /* connect port to USARTx_Rx */ gpio_af_set(EVAL_COM_GPIO_PORT, EVAL_COM_AF, COM_RX_PIN); /* configure USART Tx as alternate function push-pull */ gpio_mode_set(EVAL_COM_GPIO_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP, COM_TX_PIN); gpio_output_options_set(EVAL_COM_GPIO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, COM_TX_PIN); /* configure USART Rx as alternate function push-pull */ gpio_mode_set(EVAL_COM_GPIO_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP, COM_RX_PIN); gpio_output_options_set(EVAL_COM_GPIO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, COM_RX_PIN); /* USART configure */ usart_deinit(com); usart_baudrate_set(com, 115200U); usart_receive_config(com, USART_RECEIVE_ENABLE); usart_transmit_config(com, USART_TRANSMIT_ENABLE); usart_enable(com);} 把GPIO_AF_1改成GPIO_AF_0,PB6和PB7给USART0用的时候,AF编号是0,datasheet里有个GPIO AF表格可以查 sonicll 发表于 2022-9-29 15:11
把GPIO_AF_1改成GPIO_AF_0,PB6和PB7给USART0用的时候,AF编号是0,datasheet里有个GPIO AF表格可以查 ...
这是官方库函数的参数说明,USART0就是GPIO_AF_1啊
/*!
\brief set GPIO alternate function
\paramgpio_periph: GPIOx(x = A,B,C)
only one parameter can be selected which is shown as below:
\arg GPIOx(x = A,B,C)
\paramalt_func_num: GPIO pin af function, please refer to specific device datasheet
\arg GPIO_AF_0: TIMER13, TIMER14, TIMER16, SPI0, SPI1, I2S0, CK_OUT, USART0,
I2C0, I2C1, SWDIO, SWCLK
\arg GPIO_AF_1: USART0, USART1, TIMER2, TIMER14, I2C0, I2C1
\arg GPIO_AF_2: TIMER0, TIMER1, TIMER15, TIMER16, I2S0
\arg GPIO_AF_3: I2C0, TIMER14
\arg GPIO_AF_4(port A,B only): USART1, I2C0, I2C1, TIMER13
\arg GPIO_AF_5(port A,B only): TIMER15, TIMER16, I2S0
\arg GPIO_AF_6(port A,B only): SPI1
\arg GPIO_AF_7(port A,B only): CMP
\parampin: GPIO pin
one or more parameters can be selected which are shown as below:
\arg GPIO_PIN_x(x=0..15), GPIO_PIN_ALL
\param none
\retval none
*/
void gpio_af_set(uint32_t gpio_periph, uint32_t alt_func_num, uint32_t pin) sonicll 发表于 2022-9-29 15:11
把GPIO_AF_1改成GPIO_AF_0,PB6和PB7给USART0用的时候,AF编号是0,datasheet里有个GPIO AF表格可以查 ...
还真是,没注意AF0也有个USART0。。。 注意看手册 这两个引脚的默认功能不是下载引脚吧 PB6和PB7这两个引脚默认的功能就是串口啊 为何还需要进行复用呢 楼主想要把这两个 引脚的功能配置成什么呢 楼主请注意看手册无需复用 它的默认功能就是串口 楼主可能把型号看错了 或者看错数据手册了 ya1234 发表于 2022-9-29 15:58
还真是,没注意AF0也有个USART0。。。
是不是吧不同的型号的引脚定义看混了啊 这两个引脚的默认功能不是下载引脚 AF复用编号没有对 哈哈,同遇到这个问题,这帖子很有用 它的默认功能就是串口 其实还是得看数据手册,多找几个可能导致问题发生的点进行排查 呐咯密密 发表于 2022-9-29 15:58
这个数据对应手册还是比较清楚的,AF0对应的串口0 呐咯密密 发表于 2022-9-29 15:58
这个手册图片比较清晰,直接复用成串口0就可以了
页:
[1]