做网站得叫什么,udacity 移动网站开发,苏州市吴江建设局网站,郑州网站设计收费单片机型号#xff1a;GD32F303系列
CubeMX配置
配置串口参数 开启DMA 开启中断 示例代码
使用到的变量
uint8_t RX_Buff_FLAG 0;
uint8_t RX_Buff[300] {0};
uint8_t TX_Buff[300] {0};串口接收空闲函数
// 串口接收空闲函数
void HAL_UARTEx_RxEventCallback(UART_H…单片机型号GD32F303系列
CubeMX配置
配置串口参数 开启DMA 开启中断 示例代码
使用到的变量
uint8_t RX_Buff_FLAG 0;
uint8_t RX_Buff[300] {0};
uint8_t TX_Buff[300] {0};串口接收空闲函数
// 串口接收空闲函数
void HAL_UARTEx_RxEventCallback(UART_HandleTypeDef *huart, uint16_t Size)
{if(huart huart2){RX_Buff_FLAG 1;RX_Length 300 - __HAL_DMA_GET_COUNTER(huart-hdmarx);HAL_GPIO_WritePin(USART2_CTS_GPIO_Port, USART2_CTS_Pin, GPIO_PIN_RESET);HAL_UARTEx_ReceiveToIdle_DMA(huart2, RX_Buff, 300);}
}主函数
HAL_GPIO_WritePin(USART2_CTS_GPIO_Port, USART2_CTS_Pin, GPIO_PIN_RESET);
// 启动串口DMA接收
HAL_UARTEx_ReceiveToIdle_DMA(huart2, RX_Buff, 300);while(1)
{// 等待接收if(RX_Buff_FLAG 1){RX_Buff_FLAG 0;HAL_GPIO_WritePin(USART2_CTS_GPIO_Port, USART2_CTS_Pin, GPIO_PIN_SET);// 发送数据TX_Buff[0] 0x01;TX_Buff[1] 0x02;TX_Buff[2] 0x03;HAL_UART_Transmit_DMA(huart2, TX_Buff, 10);}
}出现BUG
当使用115200进行通信没问题然后切换到其他波特率发送数据后在切换到115200进行通信就会无法接收数据
解决办法
void HAL_UART_ErrorCallback(UART_HandleTypeDef *huart)
{if(huart huart2){HAL_GPIO_WritePin(USART2_CTS_GPIO_Port, USART2_CTS_Pin, GPIO_PIN_RESET);HAL_UARTEx_ReceiveToIdle_DMA(huart2, TX_Buff, 300);}
}