STM32串口配置与使用详解:从基本配置到printf重定义
创作时间:
作者:
@小白创作中心
STM32串口配置与使用详解:从基本配置到printf重定义
引用
CSDN
1.
https://blog.csdn.net/weixin_60324241/article/details/139352303
本文将详细介绍STM32微控制器中串口的配置和使用方法,包括基本配置、发送接收函数、串口重定义以及printf函数的使用等。通过本文的学习,读者将能够掌握STM32串口通信的基本原理和具体实现方法。
1. 串口的基本配置
在CubeMX中配置串口时,首先需要选择USART1,并选择异步通信模式。接下来设置波特率,这将影响串口通信的速度和稳定性。
配置完成后,串口将在右侧显示为点亮状态。串口引脚主要用于与其他设备进行通信,例如在程序中通过串口打印信息时,可以在电脑上的串口助手软件中接收到这些信息。
2. 串口的发送接收函数
STM32提供了多种串口发送和接收函数,以满足不同的应用场景需求:
HAL_UART_Transmit()
: 使用超时管理机制发送数据HAL_UART_Receive()
: 使用超时管理机制接收数据HAL_UART_Transmit_IT()
: 中断模式发送数据HAL_UART_Receive_IT()
: 中断模式接收数据HAL_UART_Transmit_DMA()
: DMA模式发送数据HAL_UART_Receive_DMA()
: DMA模式接收数据
例如,使用HAL_UART_Transmit()
函数发送数据的示例代码如下:
HAL_UART_Transmit(&huart1, (uint8_t *)"hello windows!\r\n", 16 , 0xffff);
3. 串口重定义
在需要使用printf函数发送数据时,可以在源文件中添加串口重定义代码:
#include "stdio.h"
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif
PUTCHAR_PROTOTYPE
{
HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);
return ch;
}
4. printf串口使用卡死问题
在实际使用中,可能会遇到配置了串口并重定义了printf函数后,程序下载运行时出现死机的问题。这通常是由于某些编译器选项未正确设置导致的。解决方案是在CubeMX中勾选相应的选项,以确保printf函数能够正常工作。
5. 串口发送
使用HAL_UART_Transmit_IT()
函数可以实现中断模式下的串口发送。如果已经对printf函数进行了重定义,也可以直接使用printf函数发送数据:
printf("ddd\r\n");
6. 串口接收
串口接收需要定义串口接收回调函数。首先在main()
函数中添加串口接收函数调用:
HAL_UART_Receive_IT(&huart1,(uint8_t *)&rxbuff1,1);
然后在主文件中定义串口接收回调函数:
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
if (huart->Instance == USART1)
{
if (rxbuff1 == '\n')
{
printf("发送的数据是:%s\r\n",uart1_txbuff); //发送回显语句
uart1_rx_cnt = 0;
}
else
{
uart1_txbuff[uart1_rx_cnt]=rxbuff1;
uart1_rx_cnt ++;
}
HAL_UART_Receive_IT(&huart1,(uint8_t *)&rxbuff1,1);
}
}
通过以上步骤,可以实现STM32串口的完整配置和使用。希望本文能够帮助读者更好地理解和掌握STM32串口通信的相关知识。
热门推荐
阳台角落再利用,打造专属办公书房小天地
家长扮演好四种角色,陪伴孩子迎接中高考
揭开左心房增大的真相,能否恢复正常?
俳句中的四季之美:通过季语感受日本自然
俳句创作入门:从基本规则到实用技巧
琉球群岛:东西方文化交融的海上明珠
大理苍山一日游攻略:景点路线+交通住宿全解析
如何分析间黄金的市场趋势?这种趋势对投资者有何启示?
肠痉挛是什么病引起的
Android设备模式切换完全指南
乙酰半胱氨酸胶囊的服用剂量及注意事项
网站内容的可读性如何提升
7 年追踪 8.3 万人:新研究称站立办公可减少久坐风险
工业车载电脑:智慧交通领域的未来引擎
AI训练师:让人工智能更“懂”人类
腹腔镜手术后肚子“气鼓鼓”的,是怎么回事?
电控箱排线工艺流程图片在汽车制造中的应用与分析
90马八字(1990年的属什么命)
奈飞版《三体》“抢走”了中国故事?
为什么现代人需要瑜伽课程?4个瑜伽好处,让你找到开始练习瑜伽的意义!
白色裤子如何搭配鞋子?根据气质、场合以及个人喜好来选择!
消化道念珠菌怎么治疗好
最高4.5%!美元存款火爆,“跟风”投资需谨慎
左房扩大严重吗?一文读懂其原因、危害与防治方法
日语中的长音
汕头:全国百强!
电阻功率计算:避免元器件损坏的关键
国内首个自媒体传播伦理规范发布:不搞标题党(全文)
抽油烟机使用全攻略:从正确使用到日常维护
甲肝科普知识知多少