STM32 CubeMx 学习笔记-串口通信

本文介绍了如何使用STM32 CubeMX配置串口,并通过HAL_UART_Transmit测试串口功能。在确保串口正常工作后,详细讲解了两种重写printf函数的方法,以便将输出重定向到串口。首先需要在Keil中设置UseMicroLIB,然后分别在main.c或uart.c中实现printf的重定向函数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.CubeMx 设置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
按上面设置好,生成代码。注意串口引脚要和电路板一致!

2.测试串口和printf重写

生成代码后,用HAL_UART_Transmit()测试串口能否正常使用。

HAL_UART_Transmit(&huart1,(uint8_t*)"hello",5,100);
HAL_Delay(1000);

测试正常后,下面重写printf函数

注意先在keil里设置Ues MicroLIB,不然重写没用1
在这里插入图片描述
下面介绍2种方法:

第一种

在main.c中加#include “stdio.h”,然后在main()之前加入以下代码:

int fputc(int ch, FILE *f)
{
	/* ·¢ËÍÒ»¸ö×Ö½ÚÊý¾Ýµ½´®¿ÚDEBUG_USART */
	HAL_UART_Transmit(&UartHandle, (uint8_t *)&ch, 1, 1000);	
	
	return (ch);
}

第二种

在uart.c中加#include “stdio.h”,然后在uart.c最后加入以下代码:

#ifdef __GNUC__
  /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf
     set to 'Yes') calls __io_putchar() */
  #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
  #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */
PUTCHAR_PROTOTYPE
{
  /* Place your implementation of fputc here */
  /* ?????????????? */
  HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);
  return ch;
}

这样就可以了。

### STM32CubeMX 学习教程和笔记 #### GPIO操作基础 对于初学者而言,了解如何通过STM32CubeMX配置通用输入输出端口(GPIO)是非常重要的。这不仅限于简单的高低电平控制,还包括更复杂的外设交互功能。例如,在GPIO输出方面,可以通过设置LED来创建跑马灯效果[^1];而在输入部分,则能实现外部中断触发以及按键消抖等功能。 #### 定时器应用实例 定时器是嵌入式系统中不可或缺的一部分。利用STM32CubeMX可以轻松完成基本的计数、延时任务,并进一步探索高级特性如PWM信号生成用于模拟呼吸灯光效。此外,还介绍了如何运用定时器中断机制提高程序响应速度与效率。 #### 串行通信接口实践指南 针对USART(Universal Synchronous/Asynchronous Receiver Transmitter),即通用同步异步接收发送器的学习材料也十分详尽。除了讲解标准的数据传输流程外,还有关于`printf()`函数重定向至UART的具体方法介绍。更重要的是,当涉及到大量数据交换场景时,DMA (Direct Memory Access) 技术的应用使得整个过程更加高效稳定。 #### 模拟量处理技术解析 ADC (Analog-to-Digital Converter,模数转换器) 和 DAC (Digital-to-Analog Converter, 数模转换器) 是两个非常实用的功能模块。前者允许设备感知外界连续变化的信息源,后者则负责将内部产生的离散数值映射回物理世界中的电信号形式。两者结合起来可以在不需要额外硬件支持的情况下构建简易测量仪器或控制系统。 #### I2C总线协议入门指导 I2C是一种广泛应用于各种传感器之间的两线制串行通讯方式。通过对EERPOM存储芯片AT24C02的操作练习,读者能够掌握发起读写请求的基本步骤;而后续章节里有关环境监测元件SHT20温度湿度采集的例子更是直观展示了实际项目里的应用场景。 #### 用户代码编写注意事项 值得注意的一点是在使用STM32CubeMX自动生成框架的基础上添加个人逻辑时需格外小心。任何位于特定标记之外编写的语句都可能在下一次更新过程中被覆盖掉。因此建议始终遵循官方推荐的最佳实践,即将新增内容放置于预定义区域内[^4]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值