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

2017.12.17  下午

终于在不用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.

时间: 2025-01-17 19:05:45

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

Calabash-android 预定义steps

Calabash-android目录下的canned_steps.md中列出了一系列预定义的steps,这些steps的定义位于calabash-android\steps\目录下.本文将介绍这些steps和用法. 1.断言steps:定义在assert_steps.rb中 断言看到了文本: Then /^I see the text "([^\"]*)"$/ Then /^I see "([^\"]*)"$/ Then /^I should s

shell脚本中定义路径变量出现的BUG

=========================================================================== if 语句中的定义路径变量 引发命令的PATH路径改变出现的bug 问题 原脚本文件:inotify +rsync 实时共享 #!/bin/bash PATH=/data/ IP=172.16.1.41 cd $PATH &&\ 切换到一个新的变量中了 /usr/bin/inotifywait -mrq --format '%w%f' -e

Xcode中怎么引用Source Trees定义路径里的头文件

做的项目中需要引用Source Trees定义路径里的头文件,刚开始没有头绪,稍加思索发现太简单了. 此Source Trees非彼Source Tree,是Xcode"偏好设置"中的一个选项,见下图: 以上面的"QUICK_COCOS2DX_ROOT"一项为例,我遇到的问题是想在工程中引用这个路径下include文件夹里的头文件. 一般情况下如果想把某个文件夹中的头文件加入到工程中,可以在Build Setting中的Hearder Search Path里添加形

C++系统预定义4个用于标准数据流对象

C++系统预定义4个用于标准数据流对象 cin   cout   cerr   clog C++里关于cerr,clog,cout三者的区别: cerr(无缓冲标准错误)-----没有缓冲,发送给它的内容立即被输出 clog(有缓冲标准错误)--------有缓冲,缓冲区满时输出 cout-------------------------标准输出 联系:三个都是ostream类定义的输出流对象, cout是在终端显示器输出,cout流在内存中对应开辟了一个缓冲区,用来存放流中的数据, 但是当向c

grunt-contrib-watch 监控 JS 文件改变来运行预定义的Tasks

依赖于 GruntJs ~0.4.0 监控 JS 文件改变来运行预定义的Tasks Demo: watch: { scripts: { files: ['src/**/*.js'], tasks: ['jshint'], options: { spawn: false } } }, 引用: https://www.npmjs.com/package/grunt-contrib-watch

关于标准C语言的预定义宏

标准C语言预处理要求定义某些对象宏,每个预定义宏的名称一两个下划线字符开头和结尾,这些预定义宏不能被取消定义(#undef)或由编程人员重新定义.下面预定义宏表,被我抄了下来.__LINE__  当前程序行的行号,表示为十进制整型常量__FILE__  当前源文件名,表示字符串型常量__DATE__转换的日历日期,表示为Mmm dd yyyy 形式的字符串常量,Mmm是由asctime产生的.__TIME__ 转换的时间,表示"hh:mm:ss"形式的字符串型常量,是有asctime产

预定义宏,C语言预定义的宏详解

1.预定义宏 对于预定义宏,相信大家并不陌生.为了方便处理一些有用的信息,预处理器定义了一些预处理标识符,也就是预定义宏.预定义宏的名称都是以"__"(两条下划线)开头和结尾的,如果宏名是由两个单词组成,那么中间以"_"(一条下划线)进行连接.并且,宏名称一般都由大写字符组成. 在日常项目编程中,预定义宏尤其对多目标平台代码的编写通常具有重大意义. 通过预定义宏,程序员使用"#ifdef"与"#endif"等预处理指令,就可使

helm chart预定义值

预定义值 通过values.yaml文件(或通过--set 标志)提供的值可以从.Values模板中的对象访问.可以在模板中访问其他预定义的数据片段. 以下值是预定义的,可用于每个模板,并且不能被覆盖.与所有值一样,名称区分大小写. Release.Name:release的名称(不是chart的) Release.Time:chart版本上次更新的时间.这将匹配Last Released发布对象上的时间. Release.Namespace:chart release发布的namespace.

bat调用全路径包含空格的exe程序

点击网页按钮事件,获取相应参数并传递给本地待调用的exe程序,我们采用的方式是在注册表中定义自己的协议,该自定义协议指明需要调用的应用程序,但由于参数要传递多个,没法直接调用,于是我们又写了一个bat文件,在注册表中指明要调用的bat,在bat中处理参数并调用相应的exe,碰到的第一个问题就是上篇小结中提到的bat调用相对路径时,应用程序上方图标不显示的问题,后来加了全路径好了,但如果全路径包含空格,bat处理又有问题,我们的处理方式是: set toolPathTemp="%~dp0"

[转]Windows中的命令行提示符里的Start命令执行路径包含空格时的问题

转自:http://www.x2009.net/articles/windows-command-line-prompt-start-path-space.html 当使用Windows 中的命令行提示符执行这段指令时(测试Start命令执行带空格的路径的程序或文件问题),第一行Start会成功执行,跳出记事本程序,而第二行,会 Start跳出一个新的命令提示符,标题上写着路径,但是不会执行任何命令,第三行Start命令行提示符会提示C:\Program文件不存在,提示无 法执行. start