keil软件标准头文件在哪里?例如stdio.h,string.h这些头文件,可以包含,但是到keil的安装目录却找不到。 , 在《例说stm32》中提到的的delay.h,sys.h,usart.h头文件为什么在keil 5中都找不到?

您所在的位置:网站首页 nop指令在哪个头文件 keil软件标准头文件在哪里?例如stdio.h,string.h这些头文件,可以包含,但是到keil的安装目录却找不到。 , 在《例说stm32》中提到的的delay.h,sys.h,usart.h头文件为什么在keil 5中都找不到?

keil软件标准头文件在哪里?例如stdio.h,string.h这些头文件,可以包含,但是到keil的安装目录却找不到。 , 在《例说stm32》中提到的的delay.h,sys.h,usart.h头文件为什么在keil 5中都找不到?

2024-02-16 06:10| 来源: 网络整理| 查看: 265

本篇文章给大家谈谈 keil软件标准头文件在哪里?例如stdio.h,string.h这些头文件,可以包含,但是到keil的安装目录却找不到。 ,以及 在《例说stm32》中提到的的delay.h,sys.h,usart.h头文件为什么在keil 5中都找不到? 对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。

这个很简单,我给你用图文演示一遍,包你马上就会使用,在工程里面新建一个main.c文件,写入一个P1口LED闪烁,程序如下:在新建一个Txt2 保存 Delay.H文件,注意后润是.H保存 在Delay里面定义头文件,里面就写一个延时

一般在c:/keil/includ文件夹下,或者是lib文件夹!如果存在这个文件的话,你直接在编辑框中输入inculude ,右键单击util/ustdib,h,选择倒数第二项就找到了!

1、打开Keil软件,编写用户需要添加的头文件,并设置其后缀为h;2、在Keil主界面,点击上方的“工程”选项;3、在弹出的界面,选择“Options”选项并点击;4、在弹出的对话框中,选择“C”选项进入;5、找到“头文件路径”

1、首先,在电脑上开启自己的keil软件,如图所示。2、开启后,选择页面上方的“魔术棒”选项,如图所示。3、然后在开启的界面中选择“C/C++”选项,点击图中箭头所指的选项。4、开启后就可以添加文件,如图所示。5、添加好

系统头文件目录:C:\Keil\C51\INC 标准格式:ifndef XXXXXXXXX define XXXXXXXXX extern int a; //外部变量声明(可选)extern void Dosomething();//外部函数声明(可选)endif

keil软件标准头文件在哪里?例如stdio.h,string.h这些头文件,可以包含,但是到keil的安装目录却找不到。

头文件不用你加载,你直接在C文件里包含,如果编译没有错误,那么,自然就加进去了,就会在你的图上显示出来。比如:你在1.c文件最上面写#include

keil5不能识别自己写的头文件 遇到这种情况是应为自己没有在编译器中告诉编译器你的头文件在哪个文件夹里造成的,SO 首先project–>option for…..—>C/C++–>include paths在这里设置编译文件的文件夹 OK

你的头文件包含错了,应该是reg51.h,而不是89c51.h 你可以在X:\Keil\C51\INC的文件下找到这个文件 X为你的安装keil的目录

你说的delay.h,sys.h,usart.h头文件,不是库文件,也不是开发软件所含的文件,所以你找不到。这是开发板制作单位为演示开发板使用自己编制的软件,对应的还有delay.C,sys.C,usart.C。如果你需要,可以去这里下载:http

你要这样写#include,这样它就在自带头文件夹里找了,你写成#include"reg52.h"话,它就在你工程里面文件夹里关联,当然找不到,除非你建立了reg52.h这个库文件!

在include paths 中添加目录 并在工程目录下添加stm32f10x_conf.c

Keil为什么会找不到头文件

可能是你文件覆盖的时候没有清除原来的输出文件,一般是把输出文件全部删除,然后点开 Target->output,把里面的Create Batch File的√去掉,保存后重新编译就可以了

32f10x_conf.h这个文件在应用里面。然后包含固件库的头文件。自己写一个也可以。1 2 3 4 // #include "stm32f10x_flash.h"// #include "stm32f10x_fsmc.h"include "stm32f10x_gpio.h"// #include "stm32f1

这两个版本不一样,使用的头文件当然不一样了。解决方法:使用4.12版本。

在include paths 中添加目录 并在工程目录下添加stm32f10x_conf.c

你说的delay.h,sys.h,usart.h头文件,不是库文件,也不是开发软件所含的文件,所以你找不到。这是开发板制作单位为演示开发板使用自己编制的软件,对应的还有delay.C,sys.C,usart.C。如果你需要,可以去这里下载:http

keil5找不到stm32固件函数库的头文件

把箭头中的方框内设置成相应的值即可。

可以找到的 在这个目录里Keil\C51\INC。。。

可能是头文件被改动过,头文件出了问题,重新下载一个烤进~\keil\arm\INC中试下!!

我有一段代码用的sys.h头文件,但是编译的时候总是报错,USER\key.h(3): error: #5: cannot open source input file "sys.h": No such file or directory。///我百度了很多找不到有效的解决办法,想下载一个SYS

你要这样写#include,这样它就在自带头文件夹里找了,你写成#include"reg52.h"话,它就在你工程里面文件夹里关联,当然找不到,除非你建立了reg52.h这个库文件!

需要你手动添加到Project里面,并在c/c++ -》include path里面添加路径

在《例说stm32》中提到的的delay.h,sys.h,usart.h头文件为什么在keil 5中都找不到?

keil5不能识别自己写的头文件 遇到这种情况是应为自己没有在编译器中告诉编译器你的头文件在哪个文件夹里造成的,SO 首先project–>option for…..—>C/C++–>include paths在这里设置编译文件的文件夹 OK

头文件不用你加载,你直接在C文件里包含,如果编译没有错误,那么,自然就加进去了,就会在你的图上显示出来。比如:你在1.c文件最上面写#include

可能是头文件被改动过,头文件出了问题,重新下载一个烤进~\keil\arm\INC中试下!!

写完之后.c文件保存在你刚开始建立的那个工程里面。我一般都是把工程建立在桌面方便找。

在include paths 中添加目录 并在工程目录下添加stm32f10x_conf.c

你说的delay.h,sys.h,usart.h头文件,不是库文件,也不是开发软件所含的文件,所以你找不到。这是开发板制作单位为演示开发板使用自己编制的软件,对应的还有delay.C,sys.C,usart.C。如果你需要,可以去这里下载:http

Keil为什么总也找不到头文件 在include paths 中添加目录 并在工程目录下添加stm32f10x_conf.c 可能是头文件被改动过,头文件出了问题,重新下载一个烤进~\keil\arm\INC中试下!!需要你手动添加到Project里面,并在c/c++ -》include path里面添加路径可能是你文件覆盖的时候没有清除原来的输出文件,一般是把输出文件全部删除,然后点开 Target->output,把里面的Create Batch File的√去掉,保存后重新编译就可以了直接用keil打开一个例程,ctrl+shift+F,选择Find in Files,输入systick,下面Find Options全部不选,然后Find All。 在include paths 中添加目录 并在工程目录下添加stm32f10x_conf.c 你要这样写#include,这样它就在自带头文件夹里找了,你写成#include"reg52.h"话,它就在你工程里面文件夹里关联,当然找不到,除非你建立了reg52.h这个库文件!一般看是什么问题了,具体问题,具体分析,比如有的头文件里的定义,跟自己程序里的冲突。写完之后.c文件保存在你刚开始建立的那个工程里面。我一般都是把工程建立在桌面方便找。我来回答你的问题吧,前几天对这个方面有一定的深入了解,也写下了大量的笔记 虽然C编程的时候,对于不同的芯片,有不同的头文件,但是,万变不离其宗。 只要学会了写自己的头文件,就可以应付各类型号单片机了,就算你用的是AT89C2052,还是AT89C51,STC12C等等,都可以用一个头文件reg51.h 不过要做相应的修。 以下是我对reg51.h个人的见解:(对于你很有用的) 后面带上了在编写C51时带用的头文件,及其内部函数和宏定义的详细解说。 想了解如下方面的知识来来邮[email protected] 一, C51内存结构深度剖析 二, reg51.头文件剖析 三, 浅淡变量类型及其作用域 四, C51常用头文件 五, 浅谈中断 六, C51编译器的限制 七, 小淡C51指针 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// reg51.头文件剖析 我们平时写单片机应用程序的时候,所使用的头文件大多都是用的的reg51.h或是用reg52.h。会写C51的人都会用,但对其头文件内部的定义有所了解的人确并不多。 下面对其内部做详细解释,方便读者作进一步的了解,并能运用各类型号的单片机。因为增强型号的单片机的增强功能都是通过特殊功能寄存器控制。 打开 reg52.h 头文件,会发现是由大量的 sfr ,sbit的声明组成,甚至于还有sfr16.其实这样的声明都是与单片机内部功能寄存器(特殊功能寄存器)联系起来的,下面对其做出详细解释 sfr: 声明变量 SFR 声明一个变量,它的声明与其它的C变量声明基本相同,唯一的区别,SFR在声明的同时为其指定特殊功能寄存器作为存储地址,而不同于C变量声明的整型,字符型等等由编译器自动分配存储空间。 如reg52.h头文件,第一条声明就是sfr P0 = 0x80; 此处声明一个变量P0,并指定其存储地址为特殊功能寄存器0x80;,在加入reg52.h头文件后。编写应用程序时P0就可以直接使用而无需定义,对P0的操作就是,对内部特殊功能寄存器(0x80对应用MCU的P0口)的操作,可进行读写操作。 如果将第一条声明改为sfr K0 = 0x80; 那么,如果要把单片机的P0口全部拉低,则不能写P0=0x00;而应保存后再在应用程序中写成K0=0x00;否则编译器会提示“P0为未定义标识符” 使用方法: sfr [variable] = [address] //为变量分配一个特殊功能寄存器。 1 等号右边,只能是十进制,十六进制整型的数据常量,,不允许带操作符的表达式 经典的8051内核支持的SFR地址从0x80H~0xFF 飞利浦80C51MX系列0x180H~0x1FF 2 SFR不能声明于任何函数内部,包括main函数。只能声明于函数外。 3 用SFR声明一个变量后,不能用取地址运算符&获取其地址, 编译无法通过,编译器会提示非法操作。 4 有一点须特别注意,51内核0x80~0xff,为特殊功能寄存器地址区间,但并不是所有的地址都有定义,如果说你所用的MCU芯片上对于某个地址没有定义,那么用sfr在定义变量的时候,不要把变量的地址分配到未定义的特殊功能寄存器上,虽然编译时能通过,用KEIL仿真时貌似是没有问题,但下载到芯片里运行时,是会出问题的。比如说,向一个未定义的特殊功能寄存器执行读操作,读出来的就是一个未知的数。(读者可自行测试,先把串口通信调通,然后做一个简单的人机交互。读出一个数后,再发给计算机,用串口调试助手或是串口监控查看。这用方法在仿真的时候很有用。)所以具体那些特殊功能寄存器能够用,就要查看你使用的芯片手册。 5 若遇到增强性的单片机,只要知道其扩展的特殊功能寄存器的地址,用SFR定 就可以很方便进行编程。 sbit: 声明变量 sbit 同样是声明一个变量,和SFR 使用方法类似,但是SBIT是用来声明一个位变量,因为,在51系列的应用中,非常有必要对SFR的单个位进行存取,而通过bit 数据类型,使其具备位寻址功能。 如,在reg52.h中有如下声明 sfr IE = 0xA8; sbit EA = IE^7; sbit ET2 = IE^5; //8052 only sbit ES = IE^4; sbit ET1 = IE^3; sbit EX1 = IE^2; sbit ET0 = IE^1; sbit EX0 = IE^0; 所以,对EA的操作即是对IE最高位的操作。 但如果想让 SP DPL DPH PCON TMOC TL0 TL1 TH0 TH1 SBUF这些特殊功能寄存器具备位寻址,采用上述如IE类似的定义,是不行的,虽然修改后,在编译的时候不会出现错误,但只要用到你定义的位变量名时就会出错。原因是,只有特殊功能寄存器的地址是8的倍数(十六进制以0或8结尾)才能进行位寻址。 打开reg52.h头文件可以看到,所有用sbit声明了的特殊功能寄存器的地址均是以0或8结尾 如硬要达到上述要求,可用带参的宏定义来完成。此处不做详细说明(意义并不大)。 下面对sbit的使用做详细介绍: 随着8051的应用,非常有必要对特殊功能寄存器的单个bit位进行存取,C51编译器通过sbit 数据类型,提供了对特殊功能寄存器的位操作。 以下是sbit的三种应用形式: 一, sbit name = sfr-name^bit-position; sfr PSW =0xD0; sfr IE =0xA8; sbit OV= PSW^2; sbit CY=PSW^7; sbit EA= IE^7; 二, sbit name= sft-address^bit-position; sbit OV =0xD0^2; sbit CY =0xD0^7; sbit EA =0xA8^7; 三, sbit name= sbit-address; sbit OV =0xD2; sbit CY =0xD7; sbit EA =0xAF; 现对上述三种形式的声明做必要的说明 第一种形式sbit name = sfr-name^bit-position;如sbit OV= PSW^2; 当中的这个特殊功能寄存器必须在此之前已经用sfr 定义,否则编译会出错。 bit-position范围从0~7; 第二种形式 sbit name= sft-address^bit-position如sbit OV =0xD0^2; 与第一种形式不同之外在于,此处直接使用PSW的地址.第一种形式须先定义PSW 第三种形式. sbit name= sbit-address 如sbit OV =0xD2 是直接用的OV的地址 OV的地址计算方式,是OV所在的寄存器地址加上OV的bit-position 注意: 不是所有的SFR都可位寻址。只有特殊功能寄存器的地址是8的倍数(十六进制以0或8结尾)才能进行位寻址,并且sbit声明的变量名,虽可以是任意取,但是最好不要以下划线开头,因为以下划线开头的都保留给了C51的头文件做保留字。 sfr16: 声明变量 许多8051的派生型单片机,用两个连续地址的特殊功能寄存器,来存储一个16bit的值。例如,8052就用了0xCC和0xCD来保存定时/计数寄存器2的高字节和低字节。编译器提供sfr16这种数据类型,来保存两个字节的数据。虚拟出一个16bit的寄存器。 如下: sfr16 T2 = 0xCC 存储方面为小端存储方式,低字节在前,高字节在后。定义时,只写低字节地址,如上,则定义T2为一个16位的特殊功能寄存器。 T2L= 0CCh, T2H= 0CDh 使用方法: sfr [variable] = [low_address] 1 等号右边,只写两个特殊功能寄存器的低地址,且只能是十进制,十六进制的整型数据常量,不允许带操作符的表达式 2 SFR不能声明于任何函数内部,包括main函数。只能声明于函数外。 3 用SFR声明一个变量后,不能用取地址运算符&获取其地址, 编译无法通过,编译器会提示非法操作。 4 当你向一个sfr16写入数据的时候,KEIL CX51 编译器生成的代码,是先写高字节,后写低字节,(可通过返汇编窗口查看)在有些情况下,这并非我们所想要的操作顺序。使用时,须注意。 5 当你所要写入sfr16的数据,当是高字节先写还是低字节先写非常重要的时候,就只能用sfr 这个关键字来定义,并且任意时刻只保存一个字节,这样操作才能保证写入正确。 ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// C51常用头文件 在KEIL 中,对于单片机所使用的头文件,除了reg51 reg52以外,还有一些从各芯片制商的官网下载与reg51,reg52功能类似的头文件,需了解透外,还要对各类型单片机均可通用且相当有用的的头文件,做相应的了解。因为,内部所包含的函数与宏定义,可以及大的方便我们编写应用程序。 1字符函数 ctype.h 1 extern bit isalpha(char); 功能:检查参数字符是否为英文字母,是则返回1 2 extern bit isalnum(char) 功能:检查字符是否为英文字母或数字字符,是则返回1 3 extern bit iscntrl(char) 功能:检查参数值是否在0x00~0x1f 之间或等于0x7f,是则返回1 4 extern bit isdigit(char) 功能: 检查参数是否为数字字符,是则返回1 5 extern bit isgraph(char) 功能: 检查参数值是否为可打印字符,是则返回1,可打印字符为0x21~0x7e 6 extern bit isprint(char) 功能:除了与isgraph相同之外,还接受空格符0x20 7 extern bit ispunct(char) 功能:不做介绍。 8 extern bit islower(char) 功能:检查参数字符的值是否为小写英文字母,是则返回1 9 extern bit isupper(char) 功能:检查参数字符的值是否为大写英文字母,是则返回1 10 extern bit isspace(char) 功能:检查字符是否为下列之一,空格,制表符,回车,换行,垂直制表符和送纸。如果为真则返回1 11 extern bit isxdigit(char) 功能:检查参数字符是否为16进制数字字符,是则返回1 12 extern char toint(char) 功能:将ASCII字符0~9 a~f(大小写无关)转换成对应的16进制数字, 返回值00H~0FH 13 extern char tolower(char) 功能:将大写字符转换成小写形式,如字符变量不在A~Z之间,则不作转换而直接返回该字符 14 extern char toupper(char) 功能:将小写字符转换成大写形式,如字符变量不在a~z之间,则不作转换而直接返回该字符 15 define toascii(c) ((c)&0x7f) 功能:该宏将任何整形数值缩小到有效的ASCII范围之内,它将变量和0x7f相与从而去掉第7位以上的所有数位 16 #define tolower(c) (c-‘A’+’a’) 功能:该宏将字符与常数0x20 逐位相或 17 #define toupper(c) ((c)-‘a’+’A’) 功能:该宏将字符与常数0xdf 逐位相与 2数学函数 math.h extern int abs (int val); extern char cabs (char val); extern long labs (long val); extern float fabs (float val); 功能:返回绝对值。上面四个函数,除了形参和返回值不一样之外, 其它功能完全相同。 extern float exp (float val); extern float log (float val); extern float log10 (float val); 功能: exp 返回eval log 返回 val 的自然对数 log10 返回 以10为底,val的对数 extern float sqrt (float val); 功能: 返回val的正平方根 extern int rand(); extern void srand(int n); 功能: rand返回一个0到32767之间的伪随机数,srand用来将随机数发生器初始化成一个已知的(期望)值。 Keil uVision3中的math.h库中,不包含此函数。 extern float sin (float val); extern float cos (float val); extern float tan (float val); 功能: 返回val的正弦,余弦,正切值。val为弧度 fabs(var)

关于 keil软件标准头文件在哪里?例如stdio.h,string.h这些头文件,可以包含,但是到keil的安装目录却找不到。 和 在《例说stm32》中提到的的delay.h,sys.h,usart.h头文件为什么在keil 5中都找不到? 的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3