GD32f130 usart tx rx引脚 交换疑问
我用gd32f130的官方程序修改 可以正常使用。但是硬件那边把TXRX接反了,我就想到 stm32部分IC在软件上可以调换txrx,如是查看GD32的数据手册 发现在CTRL上有一位STRP可以控制交换TXRX,在软件上初始化后并不能实现交换。代码如下:void USART0_Init(void)
{
rcu_periph_clock_enable(RCU_GPIOB);
rcu_periph_clock_enable(RCU_USART0);
/* connect port to USART1_Tx */
gpio_af_set(GPIOB, GPIO_AF_0, GPIO_PIN_6);
/* connect port to USARTx_R1 */
gpio_af_set(GPIOB, GPIO_AF_0, GPIO_PIN_7);
gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_PULLUP,GPIO_PIN_6);
gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ,GPIO_PIN_6);
/* configure USART2 Rx as alternate function push-pull */
gpio_mode_set(GPIOB, GPIO_MODE_AF, GPIO_PUPD_PULLUP,GPIO_PIN_7);
gpio_output_options_set(GPIOB, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ,GPIO_PIN_7);
/* USART2 configure */
usart_deinit(USART0);
usart_invert_config(USART0,USART_SWAP_ENABLE);//这里交换TXRX
usart_baudrate_set(USART0,115200);
usart_receive_config(USART0, USART_RECEIVE_ENABLE);
usart_transmit_config(USART0, USART_TRANSMIT_ENABLE);
usart_parity_config(USART0, USART_PM_NONE);
usart_word_length_set(USART0, USART_WL_8BIT);
usart_stop_bit_set(USART0, USART_STB_1BIT);
usart_interrupt_enable(USART0, USART_INT_RBNE);
nvic_irq_enable(USART0_IRQn, 0, 1);
usart_enable(USART0);
}
仿真进不了串口中断,是不是需要初始化其他位置?或者配置少了哪个步骤? 没有这样用过 仿真看一下寄存器配置 时隔一月 重新看原来的程序 把usart_invert_config(USART0,USART_SWAP_ENABLE);这一句去掉 换成直接寄存器操作竟然能用了?用 USART_CTL1(USART0) |= USART_CTL1_STRP;发现usart_invert_config()函数里面只是多了个USART_CTL0(usart_periph) &= ~(USART_CTL0_UEN);关闭串口使能。懵懂啊 还可以这么操作。。??
页:
[1]