STM32F407串口通信配置与实现
创作时间:
作者:
@小白创作中心
STM32F407串口通信配置与实现
引用
CSDN
1.
https://blog.csdn.net/qq_36528377/article/details/122476520
本文将详细介绍如何使用STM32CubeMX配置工程并通过MDK-ARM编写代码实现STM32F407的串口通信。内容包括串口通信的基本概念、STM32CubeMX的配置步骤以及具体的代码实现。
一、串口通信简介
串口按位(bit)发送和接收字节的通信方式。通信可以分为同步串口通信和异步串口通信。
- 波特率:是一个衡量符号传输速率的参数。在单片机使用中,常用的波特率有9600、115200等。
- 数据位:通信中实际数据位的参数。
- 停止位:单个包的最后位。典型的值为1,1.5和2位。
- 校验位:判断是否有噪声干扰了通信或者是否传输和接收数据是否不同步。
二、STM32CubeMX配置
配置串口引脚,和串口设置
设置串口中断优先级
中断优先级又分为抢占优先级和响应优先级。数字越小越优先。
点击generate code生成初始化代码。
三、代码实现
编写fputc重定义函数。重写后可以在单片机项目中使用stdio.h库中的printf函数。
/*
如果需要支持stdio.h还需要在target里面选择USE MicroLIB
*/
/*使用范例
printf("Hello world \r\n");
HAL_Delay(500);
HAL_UART_Transmit(&huart1,"使用HAL库函数发送数据\r\n",23,1000); //1-选择串口,2-输出内容,3-输出内容长度,4-最长等待时间
*/
//重定义fputc函数
//需要调用 stdio.h头文件,支持库中printf函数
int fputc(int ch, FILE *f)
{
HAL_UART_Transmit(&huart1,(uint8_t *)&ch,1,HAL_MAX_DELAY);//挂载到串口1
return ch;
}
//重定义fgetc函数
int fgetc(FILE *f)
{
uint8_t ch;
HAL_UART_Receive(&huart1,(uint8_t *)&ch,1,HAL_MAX_DELAY);
return ch;
}
//串口中断回调
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if(huart -> Instance == USART1)
{
HAL_UART_Receive_IT(&huart1,(uint8_t*)usart1_ReadBuffer,USART1_LENGTH);
}
}
头文件中声明函数
#include "usart.h"
#include "stdio.h" //为了支持printf
#define USART1_LENGTH 8
extern uint8_t usart1_ReadBuffer[8];
//在mian.c中要定义这些外部变量
int fputc(int ch, FILE *f);
int fgetc(FILE *f);
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart);
main函数中调用串口通信相关函数实现功能,main.h中包含头文件。
/* USER CODE BEGIN 2 */
HAL_UART_Receive_IT(&huart1,(uint8_t*)usart1_ReadBuffer,USART1_LENGTH);
printf("STM32F407 Init!\r\n");
Led0_Light_N(5,500);
Led1_Light_N(5,500);
/* USER CODE END 2 */
四、在target里面选择USE MicroLIB
这一步挺关键的,如果没有在target里面选择USE MicroLIB的话,前面写了重定义fputc也不会生效。
热门推荐
菊苣提取物在降低血尿酸水平中的作用研究
投标书里供货能力怎么写?
如何解决投影仪放出来的不清楚问题(优化图像投影质量)
美股盘前热门中概股大涨,多家外资机构集体看多A股
可耻的失败:深陷帝国坟场的泥潭,北约是如何输掉阿富汗战争的?
女厕排队之困:呼唤公共设施的公平与合理
泉州市区5个名气较大的博物馆
西沙必利、莫沙必利、伊托必利、普芦卡必利之间的区别!
麦冬的功效与作用禁忌有哪些
家用壁挂式空调的工作原理与优缺点分析
金铲铲之战S8卑尔维斯主C阵容攻略:搭配与经营详解
Fluid Flux2.0海浪原理拆解
年代剧《六姊妹》为何热播?以亲情引发时代共鸣
济宁:完善乡村医疗卫生服务体系 提升基层医疗服务水平
“攻略”来了!一文教你看懂检验报告,为自己的健康把关!
市场在售种类达200多种,四川野生菌你知多少?
RDP与VNC深度对比:技术原理、性能特点及应用场景
单片机蓝牙通信入门:HC05模块使用详解
认识中药:黄芪被称为千年补气圣品,它有哪些现代养生密码?
正念冥想是什么?冥想好处、正念减压提升身心健康
离岸人民币交易:了解与应用
厨房装修设计指南:15个实用案例与关键要点解析
这些日常习惯竟是癌症的“帮凶”?五种高发癌症该如何科学预防?一文说清!
关于节日的民间传说(你知道哪些跟节日有关的民间故事)
极致的性价比,到底意味着什么?深度解读性价比的内在价值
智能制造教育:基础普及、实践结合、与时俱进、跨学科综合与创新能力的培育之
编程小白如何一步步成长为大神?大学新生的最佳编程入门攻略
河北围场马铃薯,频闪产业“科技范儿”
私营企业公章字体:设计规范与选择建议
年轻人做年夜饭盯上预制菜:一桌仅需200元,胡椒猪肚鸡月销上万单