STM32
直播中

张秀兰

7年用户 1255经验值
私信 关注
[问答]

如何利用stm32cubeMX配置实现简单的串口通信?

如何利用STM32cubeMX配置实现简单的串口通信

回帖(1)

张丽雯

2021-12-8 13:52:54
本文是基于stm32f103C8T6串口通信例程,介绍stm32cubeMX配置实现简单的串口通信(使用基于硬件抽象层的库函数版本)。
本文实验需要环境:
一、stm32开发环境:
1、安装Java环境
2、安装STM32cubeMX并导入stm32f1系列开发包
3、安装Keil μVision5并导入stm32f1系列开发包
4、jilink驱动
二、硬件设备
1、stm32f103c8t6开发板一块
2、jilink调试下载线一条(带USB转com)
3、母对母杜邦线多根
本文使用stm32cubeMX配置stm32f103c8t6的系统时钟使能、串口及GPIO等外设初始化:
如图所示:





STM32cubeMX配置生成硬件初始化代码,设置串口波特率为115200,并在NVIC(中断控制器)中设置串口中断优先级。其他外设配置如:时钟树、GPIO、RCC及debug等,请看博主文章STM32cubeMX的使用
时钟树配置如图:





中断使能及优先级配置如图:





打开代码工程文件,编译;
编写代码实现串口通信(发送/接收数据)
1、使用函数: HAL_UART_Receive_IT(&huart1,buf1,1)打开串口接收中断,并将接收数据存入buf1中。
2、在串口接收中断回调函数HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)中将buf1中的数据发送出去,并再次打开串口接收中断。
定义接收缓冲区
uint8_t buf1[10]; 打开串口接收中断,等待接收数据
HAL_UART_Receive_IT(&huart1,buf1,1);   编写中断回调函数,向串口返回接收的数据并翻转LED灯
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart) // 中断回调函数{        HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13); //翻转LED        HAL_UART_Transmit(&huart1,buf1,1,0);  //将接收的数据返回串口        HAL_UART_Receive_IT(&huart1,buf1,1); //再次开启接收中断        }




通过以上步骤,编译代码,烧写到开发板中,使用串口助手即可监测代码效果





至此,基于stm32f103c8t6的串口通信已经实现。
附上本文所示例程的源码及博主本人操作高清视频:例程资源及操作视频
https://download.csdn.net/download/csdn_vipuser/11644256
举报

更多回帖

发帖
×
20
完善资料,
赚取积分