2024年3月28日发(作者:佴婉仪)
GD32F305是一款基于ARM Cortex-M4的微控制器,通常用于嵌入式系统开发。下面是一
个简单的示例代码,演示如何使用GD32F305的GPIO和UART功能。
c
复制代码
#include "gd32f30x.h"
#define UART_BAUD_RATE 115200
void GPIO_Init(void)
{
rcu_periph_clock_enable(RCU_GPIOA);
rcu_periph_clock_enable(RCU_GPIOB);
rcu_periph_clock_enable(RCU_GPIOC);
rcu_periph_clock_enable(RCU_GPIOD);
rcu_periph_clock_enable(RCU_GPIOE);
rcu_periph_clock_enable(RCU_GPIOF);
rcu_periph_clock_enable(RCU_GPIOG);
rcu_periph_clock_enable(RCU_GPIOH);
}
void UART_Init(void)
{
rcu_periph_clock_enable(RCU_USART0);
rcu_periph_clock_enable(RCU_GPIOA);
gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_9);
usart_deinit(USART0);
usart_baudrate_set(USART0, UART_BAUD_RATE);
usart_word_length_set(USART0, USART_WL_8BIT);
usart_stopbit_set(USART0, USART_STB_1BIT);
usart_parity_config(USART0, USART_PM_NONE);
usart_hardwareflow_rts(USART0, USART_RTS_DISABLE);
usart_hardwareflow_cts(USART0, USART_CTS_DISABLE);
usart_receive_config(USART0, USART_RECEIVE_ENABLE);
usart_transmit_config(USART0, USART_TRANSMITTERENABLE);
usart0_interrupt_enable(USART0, USART0_IERRENABLE);
}
int main(void)
{
GPIO_Init();
UART_Init();
while (1)
{
char data = 'A';
usart0_transmit(USART0, &data, 1, 1000);
data = usart0_receive(USART0, 1, 1000);
if (data != ERROR) {
printf("%c", data);
} else {
printf("Error");
}
}
}
上述代码首先初始化了GPIO和UART模块,然后在一个无限循环中,通过UART发送一个
字符'A',并接收一个字符。如果接收成功,则将接收到的字符打印到串口终端。如果接收失
败,则打印"Error"。
2024年3月28日发(作者:佴婉仪)
GD32F305是一款基于ARM Cortex-M4的微控制器,通常用于嵌入式系统开发。下面是一
个简单的示例代码,演示如何使用GD32F305的GPIO和UART功能。
c
复制代码
#include "gd32f30x.h"
#define UART_BAUD_RATE 115200
void GPIO_Init(void)
{
rcu_periph_clock_enable(RCU_GPIOA);
rcu_periph_clock_enable(RCU_GPIOB);
rcu_periph_clock_enable(RCU_GPIOC);
rcu_periph_clock_enable(RCU_GPIOD);
rcu_periph_clock_enable(RCU_GPIOE);
rcu_periph_clock_enable(RCU_GPIOF);
rcu_periph_clock_enable(RCU_GPIOG);
rcu_periph_clock_enable(RCU_GPIOH);
}
void UART_Init(void)
{
rcu_periph_clock_enable(RCU_USART0);
rcu_periph_clock_enable(RCU_GPIOA);
gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_9);
usart_deinit(USART0);
usart_baudrate_set(USART0, UART_BAUD_RATE);
usart_word_length_set(USART0, USART_WL_8BIT);
usart_stopbit_set(USART0, USART_STB_1BIT);
usart_parity_config(USART0, USART_PM_NONE);
usart_hardwareflow_rts(USART0, USART_RTS_DISABLE);
usart_hardwareflow_cts(USART0, USART_CTS_DISABLE);
usart_receive_config(USART0, USART_RECEIVE_ENABLE);
usart_transmit_config(USART0, USART_TRANSMITTERENABLE);
usart0_interrupt_enable(USART0, USART0_IERRENABLE);
}
int main(void)
{
GPIO_Init();
UART_Init();
while (1)
{
char data = 'A';
usart0_transmit(USART0, &data, 1, 1000);
data = usart0_receive(USART0, 1, 1000);
if (data != ERROR) {
printf("%c", data);
} else {
printf("Error");
}
}
}
上述代码首先初始化了GPIO和UART模块,然后在一个无限循环中,通过UART发送一个
字符'A',并接收一个字符。如果接收成功,则将接收到的字符打印到串口终端。如果接收失
败,则打印"Error"。