关于stm32建立工程的c语言问题 主函数里面包含了stm32f10x.h和led.h, led.

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于stm32建立工程的c语言问题 主函数里面包含了stm32f10x.h和led.h, led.相关的知识,希望对你有一定的参考价值。

关于stm32建立工程的c语言问题
主函数里面包含了stm32f10x.h和led.h,
led.h里面有这样几句话:
ifndef _LED_H
define _LED_H
#include<stm32f10x.h>

为啥stm32f10x.h没有重复包含?
c语言小白一个,还请大神指教。

参考技术A 已经包含了呀,还要重复干嘛追问

是我没说清楚,上面的代码是是我摘录书上的,如果按这样写,stm32f10x.h这个头文件有没有被重复包含?

追答

没有呀,可以这样写

追问

为啥?在主函数里面不是直接就包含了吗,为啥led.h还要包含一次?

追答

他用到了他的函数,肯定要包含,

追问

前面那个stm32f10x.h不能被共用吗

追答

不是公用,也要包含,程序才能运行起来

追问

谢谢!

本回答被提问者采纳
参考技术B 应该是这条语句的作用吧
#ifndef
#define

end追问

没错 我想知道为啥这样写stm32f10x.h没有被重复包含呢

追答

我记得这条语句作用就是防止重复定义

追问

是的,但是在这里面是防止led.h重复包含吧,没有防止stm32f10x.h重复包含吧

谢谢!!

使用HAL库函数建立STM32F2工程

一、建立一个新的文件夹,新建三个文件夹User、Driver、Project,还可以加一个Doc存放工程的相关说明等等。

1、将STM32F2xx的库函数(HAL函数库)中的Drivers文件夹中的所有文件复制到Driver中。

2、找到.\\STM32Cube_FW_F2_V1.1.0\\Projects\\STM322xG_EVAL\\Templates目录下的INC和SRC文件夹,复制到User中。

二、打开KEIL-MDK软件,新建project->new project,目录选在Project文件夹下,Device选择STM32F205VCT6(根据实际芯片选择)。

三、在左侧导航栏, 接下来就是为工程添加组和源文件了,首先添加四个组:Lib,User,CMSIS,StartUp.然后为各个组添加源文件:

 

Lib->添加Derivers\\ STM32F2xx_HAL_Driver\\src下所有源文件,当然后也可以根据需要只选择部分文件。

User->添加User目录下所有源文件(如果目录中包含了system_stm32f2xx.c文件,注意不要重复引入工程中)。

CMSIS->添加\\Drivers\\CMSIS\\Device\\ST\\STM32F2xx\\Source\\Templates目录下的system_stm32f2xx.c文件。

StartUp->添加Drivers\\CMSIS\\Device\\ST\\STM32F2xx\\Source\\Templates\\arm目录下的startup_stm32f2xx.s文件.

这样一来就添加完所有文件了.

技术分享

四、配置项:

1、全局常量(C++/define):USE_STDPERIPH_DRIVER, STM32F205xx;

2、头文件目录包含(C++/Include)

技术分享

五、删除不必要的外设文件,精简程序。

 

附:

STM32Cube_FW_F2_V1.1.0库函数下载链接:

stm32f2xx标准库函数http://download.csdn.net/detail/u013521188/9769839

stm32f2xx开发手册http://download.csdn.net/detail/u013521188/9769842

HAL库函数手册:http://download.csdn.net/detail/u013521188/9771024

 

其中与V1.4.0中CMSIS中的内容大致相同,可以相互替补。

注意事项:

 在头文件中包含其他的文件时,要放在声明之后,或在文件尾部进行包含。

以上是关于关于stm32建立工程的c语言问题 主函数里面包含了stm32f10x.h和led.h, led.的主要内容,如果未能解决你的问题,请参考以下文章

STM32 相同头文件名称的路径问题

keil软件 startup是啥文件

stm32学习-创建工程项目

一个工程只能有一个main函数,啥意思?、?、

STM32建工程模板

使用HAL库函数建立STM32F2工程