您的位置:首页 > 游戏 > 游戏 > 【STM32+HAL库】---- 串口通过中断模式实现数据收发

【STM32+HAL库】---- 串口通过中断模式实现数据收发

2024/10/6 8:22:49 来源:https://blog.csdn.net/weixin_66509332/article/details/141866930  浏览:    关键词:【STM32+HAL库】---- 串口通过中断模式实现数据收发
硬件开发板:STM32G0B1RET6
软件平台:cubemax+keil+VScode

1 新建cubemax工程

1.1 配置系统时钟树

image

1.2 UART配置

查阅原理图,可知G0开发板的UART2连接到了板卡搭载的ST-Link上,故开启UART即可
image
UART2对应着PA2,PA3引脚
image
展开connectivity,找到USART2,模式选择异步通信模式Asynchronous,注意波特率为115200(默认即可)
image
使能串口中断
image

1.3 导出工程

…略

2 代码

2.1 定义数组变量

uint8_t main_code[]="code is running!\n";
uint8_t rec_tra_data[1];        /*定义一个数组,用于存放接收和发送的数据*/

2.2 重写中断回调函数

/* USER CODE BEGIN 4 */
/*串口中断回调函数*/
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{if(huart == &huart2)    /*判断中断源*/{HAL_UART_Transmit(&huart2, (uint8_t *)rec_tra_data, 1, 0xffff); /*发送所接收到的数据*/HAL_UART_Receive_IT(&huart2,(uint8_t *)&rec_tra_data,1);        /*再次开启串口接收中断*/}
}
/* USER CODE END 4 */

2.3 main.c函数

int main(void)
{HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_USART2_UART_Init();HAL_UART_Transmit(&huart2,"\nFlash Load finished!\n",22,0xffff);  /*程序下载完成*/HAL_UART_Receive_IT(&huart2,(uint8_t *)&rec_tra_data,1);          /*开启串口接收中断*/while (1){HAL_UART_Transmit(&huart2,(uint8_t *)main_code ,strlen(main_code), 0xffff);  /*主程序*//*其中strlen()函数用于计算参数字节长度*/HAL_Delay(1000);}
}

3 实验现象

image

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com