TA的每日心情 | 奋斗 2023-7-6 08:48 |
---|
签到天数: 169 天 连续签到: 1 天 [LV.7]常住居民III
|
UART1通过 CH340 芯片,转 USB 接口连接 PC。
原理图部分如下:
串口使用的两个引脚是PB6、PB7,那么要对这两个引脚进行初始化:
GPIO_InitStructure.GPIO_Pin = GPIO_PIN_6 ; GPIO_InitStructure.GPIO_Mode = GPIO_MODE_AF_PP; GPIO_InitStructure.GPIO_Speed = GPIO_SPEED_50MHZ; GPIO_Init( GPIOB , &GPIO_InitStructure); GPIO_InitStructure.GPIO_Pin = GPIO_PIN_7; GPIO_InitStructure.GPIO_Mode = GPIO_MODE_IN_FLOATING;; GPIO_Init( GPIOB , &GPIO_InitStructure); GPIO_PinRemapConfig(GPIO_REMAP_USART1, ENABLE);之后就是对串口1的配置:
波特率选择的是115200,数据是8位,1个停止位,无校验。
USART_InitStructure.USART_BRR = 115200; USART_InitStructure.USART_WL = USART_WL_8B; USART_InitStructure.USART_STBits = USART_STBITS_1; USART_InitStructure.USART_Parity = USART_PARITY_RESET; USART_InitStructure.USART_HardwareFlowControl = USART_HARDWAREFLOWCONTROL_NONE; USART_InitStructure.USART_RxorTx = USART_RXORTX_RX | USART_RXORTX_TX; USART_Init(USART1, &USART_InitStructure); /* USART enable */ USART_Enable(USART1, ENABLE); USART_INT_Set(USART1, USART_INT_RBNE, ENABLE); /* Enable the USARTx Interrupt */ NVIC_InitStructure.NVIC_IRQ = USART1_IRQn; NVIC_InitStructure.NVIC_IRQPreemptPriority = 0; NVIC_InitStructure.NVIC_IRQSubPriority = 0; NVIC_InitStructure.NVIC_IRQEnable = ENABLE; NVIC_Init(&NVIC_InitStructure);这里使用了串口1 的接收中断,从启动文件中可以找到,中断函数的名字是USART1_IRQHandler,在gd32F20x_it.c中新建这个函数。
先实现了最简单的loopback功能的中断服务函数:
void USART1_IRQHandler(void){ unsigned int temp; if(USART_GetIntBitState(USART1, USART_INT_RBNE) != RESET) { temp=USART_DataReceive(USART1); USART_DataSend(USART1, temp); } if(USART_GetIntBitState(USART1, USART_INT_TBE) != RESET) { USART_INT_Set(USART1, USART_INT_TBE, DISABLE); }} |
|