GD32 USART0 初始化问题

昨天在参照GD32的例子做GPIO Rmap为USART0的时候,发现USART0一直无法输出串口数据。

最后在参照STM32的USART0初始化的时候,发现需要enable AFIO

所以参照STM32就在初始化之前调用了下enable RCU_AF clock的动作,然后USART 就可以正常工作了。

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);
}

 

  • 9
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 15
    评论
可以使用标准的STM32 HAL库进行GD32F103的初始化,具体步骤如下: 1. 配置系统时钟,包括外部晶振、PLL倍频等参数。 2. 配置GPIO口,包括输入输出模式、上下拉电阻等参数。 3. 配置定时器、串口、SPI等外设,包括时钟源、波特率、数据格式等参数。 4. 启动外设,开始工作。 以下是一个简单的GD32F103初始化代码示例: #include "stm32f1xx_hal.h" void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_USART1_UART_Init(void); int main(void) { HAL_Init(); SystemClock_Config(); MX_GPIO_Init(); MX_USART1_UART_Init(); while (1) { // main loop } } void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct; RCC_ClkInitTypeDef RCC_ClkInitStruct; __HAL_RCC_PWR_CLK_ENABLE(); __HAL_PWR_VOLTAGESCALING_CONFIG(PWR_REGULATOR_VOLTAGE_SCALE1); RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSE; RCC_OscInitStruct.HSEState = RCC_HSE_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_ON; RCC_OscInitStruct.PLL.PLLSource = RCC_PLLSOURCE_HSE; RCC_OscInitStruct.PLL.PLLMUL = RCC_PLL_MUL9; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { Error_Handler(); } RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |RCC_CLOCKTYPE_PCLK1|RCC_CLOCKTYPE_PCLK2; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2; RCC_ClkInitStruct.APB2CLKDivider = RCC_HCLK_DIV1; if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2) != HAL_OK) { Error_Handler(); } } static void MX_GPIO_Init(void) { GPIO_InitTypeDef GPIO_InitStruct; __HAL_RCC_GPIOC_CLK_ENABLE(); GPIO_InitStruct.Pin = GPIO_PIN_13; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW; HAL_GPIO_Init(GPIOC, &GPIO_InitStruct); } static void MX_USART1_UART_Init(void) { USART_InitTypeDef USART_InitStruct; __HAL_RCC_USART1_CLK_ENABLE(); USART_InitStruct.BaudRate = 115200; USART_InitStruct.WordLength = USART_WORDLENGTH_8B; USART_InitStruct.StopBits = USART_STOPBITS_1; USART_InitStruct.Parity = USART_PARITY_NONE; USART_InitStruct.Mode = USART_MODE_TX_RX; USART_InitStruct.CLKPolarity = USART_POLARITY_LOW; USART_InitStruct.CLKPhase = USART_PHASE_1EDGE; USART_InitStruct.CLKLastBit = USART_LASTBIT_DISABLE; if (HAL_USART_Init(&huart1, &USART_InitStruct) != HAL_OK) { Error_Handler(); } }
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值