单片机 > 单片机程序设计 > 详情

关于keil5使用注意事项(预定义、路径包含)

发布时间:2021-01-22 发布时间:
|

终于在不用keil5自带添加库的基础上0 error的新建了一个工程。磕磕绊绊搞了快一个下午,各种小问题搞到崩溃。


首先是库文件添加路径的问题 ,只要是你工程中用到的头文件,都需要在工程选项配置中添加相应的路径,另外,通过一个下午的挣扎,发现最好还是在学习的过程中逐渐构建自己的代码库,最好自己添加需要的库文件,这样便于程序的移植。也便于熟悉各种启动文件。

 

另外一定要注意程序中不能有汉语输入。

千万不要有汉语输入!千万不要有汉语输入!千万不要有汉语输入!

一开始我一直以为是keil坏了,谁知道最后还是发现是自己的错。所以一定要细心。跟着他提示的错误代码行去找,记住,一定要细心。不要老是怀疑别人。一点点汉语输入的空格导致我浪费了两个小时的时间。

找到这行,通常是里面的某个参数或者变量不符合格式。找个 里面的变量 ,把一行全部删除,然后切换英文输入,注意半角英文,如果还是不对的话,那就是你的keil坏了。


总结的合理的文件结构(养成自己的代码风格):

USERS文件:

存放自己编辑的源文件和头文件。工程中包含自己的源文件,路径中包含头文件。另外,在USERS中,最好在包含it.c  and  conf.h。

it中写中断函数,conf中释放自己需要的固件库头文件,屏蔽自己不需要的头文件。也就是说你在lib文件夹中包含了什么固件库,就需要在这里释放什么头文件。这和我们平时编写头文件和源文件的思路一样呀,一个头文件总是跟着一个源文件。


CMSIS文件:

中存放工程都必须的启动代码,core_cm3.c  /  system_stm32f10x.c   /   startup_stm32f10x_hd.s

LIB文件:

中存放程序用到固件库的源程序,同时注意包含misc.c文件。


另外,不要忘了在C++选项卡中写入USE_STDPERIPH_DRIVER,写下这句话就意味着在stm32f10x.c中包含了conf.h头文件,(具体原理点这里)不然需要自己在文件中包含这个头文件,有点麻烦。

 

上面 提到的几个文件的作用

1、core_cm3.c文件

在CoreSupport文件夹中有core_cm3.c和头文件core_cm3.h,它的作用是采用Cortex-M3内核设计的SoC芯片厂商设计的芯片提供了一个进入CM3内核的接口。core_cm3.c中还有一些与编译器(MDK、IAR等)有关的代码。较重要的是core_cm3.c中包含stdio.h头文件,这是一个ANSI C文件,主要作用是提供一些新类型的定义。

2、system_stm32f10x.c文件

DeviceSupport文件夹下是启动文件、外设寄存器定义、中断向量定义层的一些文件,这些文件由ST公司提供。system_stm32f10x.c的主要作用是设置系统时钟和总线时钟。

3、stm32f10x.h文件

这个文件非常重要,是非常底层的文件,包含了寄存器地址和结构体类型的定义,在使用到stm32固件库的地方都要包含它。

3、stm32f10x_it.c和stm32f10x_conf.h文件

stm32f10x_it.c这个文件主要是编写中断程序的,stm32f10x_conf.h被包含在stm32f10x.h文件中主要是配置外设的头文件,我们需要什么在这里打开。

4、startup_stm32f10x_hd.s文件

在这个文件中有一段启动文件,启动文件中先初始化系统时钟,然后才执行主函数,因此我们要注意配置时钟在这个文件里配置。

基本上上面这些就能够完整的编译一个keil5的工程了。

5、关于misc.c文件:

STM32 V3.5版本的库函数中没有原来版本中单独对于NVIC(中断向量嵌套)的外设驱动,把NVIC的外设驱动放在了misc.c中,实际上是代替原来的stm32f10x_nvic.c.



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
PIC单片机基础知识之二