STM32CUBEMX_USART串口使用printf函数

实验1:点亮LED
实验2:按键控制LED
实验3:外部中断检测按键
实验4:扩展芯片检测按键
实验5:定时器实现LED闪烁
实验6:基于PWM的呼吸灯
实验7:检测输入的PWM频率和脉宽
实验8:串口的输入和输出
实验9:串口使用PRINTF函数
实验10:SPI接口操作片外FLASH
实验11:SPI接口操作TF卡
实验12:IIC接口操作OLED屏幕
实验13:ADC电压采样

上一节实验虽然已经成功配置了串口,但打印输出时限制仍然比较多。因此本节实验将演示printf函数的用法,方便调试。和上一节一样,使用串口1做为实验接口。

步骤如下:

1、新建工程,进行基本配置。通过点击“ACCESS TO MCU SELECTOR”来创建一个新的工程:

参照实验1,芯片选择“STM32F103C8”。

打开外部时钟,点击“System Core”,选择RCC,在右侧弹出的菜单栏中选择“Crystal/Ceramic Resonator”。

选择调试接口,点击“System Core”,选择RCC。,在右侧弹出的菜单栏中选择“Serial Wire”。

2、配置串口。如图,选择异步模式,依次配置波特率、收发模式。

Buad Rate为传输速度,Data Direction配置为支持接收和发送。因为本实验仅使用串口发送的功能,不考虑接收,所以不用开启中断。

3、时钟配置。参照实验1.

4、参照实验1的步骤7,进行相应配置,生成工程文件。

5、修改工程。打开工程后,主要修改main.c文件。先添加头文件“stdio.h”。然后位置1,添加如下代码

代码:

#ifdef __GNUC__

  #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)

#else

  #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)

#endif /* __GNUC__ */

int fputc(int ch,FILE *f)
{
	HAL_UART_Transmit(&huart1,(uint8_t *)&ch,1,0xFFFF);
	return ch;
}

位置2,主函数while(1)中添加如下代码:

代码:

printf("welcome to a new world! \r\n");
printf("我是单片机爱好者-MCU起航! \r\n");
HAL_Delay(1000);

修改后,保存,编译、下载,重新上电。使用串口助手连接板子和电脑,可以看到串口助手收到打印信息。

整个过程有PPT、数据手册、原理图、源码、相关软件,在公众号(单片机爱好者)回复关键词:002或者STM32CUBEMX教程,即可获取下载链接。

发表评论

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据