1.程序文件规范化

在这里插入图片描述
点开官方提供的adc.c文件,发现代码上面有这么个注释,这个地方主要介绍这个源文件主要是干嘛的。
在这里插入图片描述
需要编写源文件名,作者名,版本号,日期,版权信息等等。这是一个程序文件规范化。

2.stm32f10x_conf.h文件的作用

在这里插入图片描述
在自己的user文件夹里面有一个stm32f10x_conf.h,这个文件的作用
在这里插入图片描述
打开这个文件后,发现包含了很多头文件
在这里插入图片描述
将外设驱动一些头文件全部包含进来了。那么当我包含了stm32f10x_conf.h文件那么意味着我可以使用驱动的源文件里面的函数功能了。

那么在哪里调用了stm32f10x_conf.h它呢?
在这里插入图片描述
我发现那些外设文件,都是一 一对应的头文件名和源文件名,比如stm32f10x_adc.c然后里面包含了stm32f10x_adc.h,自己名字的头文件,但是在misc.c源文件中,对应的头文件却不是自己的misc.h而是stm32f10.h这个文件。

3.stm32f10.h文件作用

在这里插入图片描述
点开stm32f10.h文件,然后这里几行写的,如果我定义了

#ifdef USE_STDPERIPH_DRIVER
  #include "stm32f10x_conf.h"
#endif

如果定义了USE_STDPERIPH_DRIVER就能使用#include “stm32f10x_conf.h”

我们发现中间#include "stm32f10x_conf.h"语句是一个灰色的。
在这里插入图片描述
这个灰色的就相当于我们用注释吧代码注释后的颜色。

在这里插入图片描述
当我加了#define USE_STDPERIPH_DRIVER 2,那一行#include "stm32f10x_conf.h"立马变成正常的颜色了,并不是注释的颜色,说明这行代码没有定义。

在这里插入图片描述
但是在FWLIB文件中的代码不要轻易的求修改它,并且又需要加一个定义语句,我们可以在main里面定义,但是在main里面呢,又不好看,此时keil5软件提供了一个功能。

在这里插入图片描述

点击魔术棒,点击C/C++选项,在Dfine里面添加USE_STDPERIPH_DRIVER,点击确定,再编译。

在这里插入图片描述
此时该文件就被成功定义了。

4.system_stm32f10x.c作用

这个文件就是负责时钟方面的
在这里插入图片描述

当我打开system_stm32f10x.c文件后,点击上面菜单栏邮箱一样图标,搜索STM32F10X_MD时候。
在这里插入图片描述

会出现七七八八没有编译的东西。此时跟之前的宏定义一样,在keil5里面将STM32F10X_MD也添加进去
在这里插入图片描述
当我在编译器添加宏STM32F10X_MD最终那些没有编译的,是灰色的,变成正常颜色了。

5.解决core_cm3.h报错

在这里插入图片描述
在这里插入图片描述

提示25个错误,没有打开core_cm3.h文件,也就是说我没用添加core_cm3.h文件所在的路径,导致编译器找不到。
在这里插入图片描述
core_cm3.h文件的路径:
Libraries\CMSIS\CM3\CoreSupport
在这里插入图片描述
当我吧路径添加进去后,最终报错
在这里插入图片描述
只有1个报错了

6.解决多次定义报错问题

在这里插入图片描述
最终还有一个报错,报错的问题是symbol systemInit符号在main和system_stm32f10x同时定义了问题。
在这里插入图片描述
点击邮箱图标然后搜索SystemInit,发现在system_stm32f10x.c也有写了一个SystemInit函数,也就是说system_stm32f10x.c与main.c都存在SystemInit函数,多次重复了,那么我就删除掉main.c里面的SystemInit函数,再编译。
在这里插入图片描述
最终0错误,0警告。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐