STM32Cubemx:搭建STM32F103系列单片机的基础工程
文章目录
STM32Cube配置
1.1 晶振引脚配置

1.2 配置SYS Mode

1.3 时钟树配置
如果有外接晶振,那么需要根据晶振频率计算一下,这里外接8Mhz。

1.4 串口配置

1.5 Cube工程配置


二、Keil配置
2.1 打开Reset and Run
设置完后,点击OK保存,不能直接×掉

2.2 实现printf重定向
这里采用最简单的方式实现,只需要修改usart.c文件就行。
将以下下代码复制进usart.c文件中就可以,然后在需要用printf的地方
#include <stdio.h>
注意将代码放在用户编辑区,不然Cube重新生成代码就把这些代码删除。
#include <stdio.h>
/* 告知连接器不从C库链接使用半主机的函数 */
#pragma import(__use_no_semihosting)
/* 定义 _sys_exit() 以避免使用半主机模式 */
void _sys_exit(int x)
{
x = x;
}
/* 标准库需要的支持类型 */
struct __FILE
{
int handle;
};
FILE __stdout;
/* */
int fputc(int ch, FILE *stream)
{
/* 不同芯片的串口标志位不一定相同! */
while((USART1->SR & 0X40) == 0);
/* 串口发送完成,将该字符发送 */
USART1->DR = (uint8_t) ch;
return ch;
}
2.2.1 对printf有较高要求的看这里
我写了一篇关于printf重定向的博客,不同办法实现printf主要区别就是是否使用微库(MicroLIB)、是否利用中断、是否打开DMA、是否使用多串口。
文章链接:STM32 HAL库:使用C标准库或MicroLIB实现printf && 多串口使用printf输出 && 结合DMA实现printf && 常见问题总结
三、演示
在mian.c中包含stdio.h,在主函数中printf()



浙公网安备 33010602011771号