记录一下GD32F103RB串口0重映射遇到的问题

参考资料:

        https://blog.csdn.net/yangkunhenry/article/details/92795388

  当我的板子需要将UART0重映射到PB6,PB7时,按照参考例程加入GPIO重映射处理。但是发现串口发送中断可以进入。但是却没有波形。尝试了各种GPIO模式都不行。

  最后还是在网上发现有高手也遇到了这个问题。总结一下应该是外设时钟使能顺序有讲究。要选打开AFIO时钟,然后再打开GPIO时钟,然后再重映射GPIO,然后再使能UART0时钟,最后再配置UART0参数。参考代码如下:

void dw_usart_config(void)
{
	
	  rcu_periph_clock_enable(RCU_AF);//Need!!!!
	
	  rcu_periph_clock_enable(RCU_GPIOB);
 
	  gpio_pin_remap_config(GPIO_USART0_REMAP,ENABLE);
	
    /* enable USART clock */
    rcu_periph_clock_enable(RCU_USART0);
	
    /* connect port to USARTx_Tx */
    gpio_init(GPIOB, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_6);
 
    /* connect port to USARTx_Rx */
    gpio_init(GPIOB, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_7);
	
		gpio_pin_remap_config(GPIO_USART0_REMAP,ENABLE);
	
 
    /* USART configure */
    usart_deinit(USART0);
    usart_baudrate_set(USART0, 115200U);
    usart_receive_config(USART0, USART_RECEIVE_ENABLE);
    usart_transmit_config(USART0, USART_TRANSMIT_ENABLE);
		
		//usart_parity_config(USART0,USART_PM_EVEN);
		//usart_word_length_set(USART0,USART_WL_8BIT);
		//usart_stop_bit_set(USART0,USART_STB_1BIT);
		
		
    usart_enable(USART0);
		
		//nvic_irq_enable(USART0_IRQn, 3U, 3U);
		//usart_interrupt_enable(USART0,USART_INT_RBNE);
}

 

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值