目录
1、cubemax端配置
1.1 初始化配置
首先通过STM32cubemax进行基础配置:
1.2 GPIO配置
通过一个LED小灯(高电平有效)来观察效果,对PB0引脚进行GPIO配置,如下图所示:
1.3 UART配置
1.3.1 串口基础配置
1.3.2 DMA配置
首先对RX进行配置,如下图所示:
接着对TX进行配置(默认就行),如下图所示:
2、keil端代码设计
2.1 初始化配置
首先在主函数上方进行发送、接收数组设置,如下图所示:
uint8_t tx[] = "TX ok";uint8_t Rx[2];
2.2 DMA接收初始化配置
HAL_UART_Receive_DMA(&huart1,Rx,sizeof(Rx));
2.3 DMA发送配置
HAL_UART_Transmit_DMA(&huart1,tx,sizeof(tx));HAL_Delay(1000);
2.4 接收回调函数设置
首先找到HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)函数,如下图所示:
接着将函数按下图所示复制到主函数上方:
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){ UNUSED(huart); }
2.5 回调函数内容代码编写
2.5.1 接收回调函数
//接收到数据 LED小灯电平翻转
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart){if(huart1.Instance == USART1){HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);}}
2.5.2 发送回调函数
将接收回调函数中R改成T即可实现发送回调函数功能。如下图所示:
当有数据发送,回调函数进行工作,如下图所示:
uint8_t tx2[] = "TX_IT ok";//发送回调函数void HAL_UART_TxCpltCallback(UART_HandleTypeDef *huart){if(huart1.Instance == USART1){HAL_UART_Transmit_DMA(&huart1,tx,sizeof(tx2));}}
2.6 回调函数内容代码优化
当在回调函数中添加延时后,会发现程序卡死,因此需要对NVIC进行配置,如下图所示:
来源地址:https://blog.csdn.net/weixin_44597885/article/details/130897647