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()

在这里插入图片描述

posted @ 2023-12-03 18:17  SuperCodeCat  阅读(751)  评论(0)    收藏  举报  来源