STM32之串口通信

基于stm32c8t6的USART发送/接收数据

本文是基于stm32f103C8T6串口通信例程,介绍stm32cubeMX配置实现简单的串口通信(使用基于硬件抽象层的库函数版本)。

本文实验需要环境:
一、stm32开发环境:
1、安装Java环境
2、安装STM32cubeMX并导入stm32f1系列开发包
3、安装Keil μVision5并导入stm32f1系列开发包
4、jilink驱动
二、硬件设备
1、stm32f103c8t6开发板一块
2、jilink调试下载线一条(带USB转com)
3、母对母杜邦线多根

本文使用stm32cubeMX配置stm32f103c8t6的系统时钟使能、串口及GPIO等外设初始化:
如图所示:
STM32之串口通信_第1张图片
STM32cubeMX配置生成硬件初始化代码,设置串口波特率为115200,并在NVIC(中断控制器)中设置串口中断优先级。其他外设配置如:时钟树、GPIO、RCC及debug等,请看博主文章STM32cubeMX的使用。
时钟树配置如图:
STM32之串口通信_第2张图片
中断使能及优先级配置如图:
STM32之串口通信_第3张图片
打开代码工程文件,编译;
编写代码实现串口通信(发送/接收数据)
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); //再次开启接收中断
	
}

STM32之串口通信_第4张图片
通过以上步骤,编译代码,烧写到开发板中,使用串口助手即可监测代码效果
STM32之串口通信_第5张图片
至此,基于stm32f103c8t6的串口通信已经实现。

附上本文所示例程的源码及博主本人操作高清视频:例程资源及操作视频
https://download.csdn.net/download/csdn_vipuser/11644256

你可能感兴趣的:(STM32之串口通信)