实验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教程,即可获取下载链接。