keilMDK使用总结

简介: keilMDK使用总结

warning: #223-D: function "CLR_TX_DATA" declared implicitly 解决方法。 以上面错误提示为例: 1  找到定义函数 CLR_TX_DATA() 的源文件 ,这里假设在 a.c  中; 2  在 a.h 中最后声明一下 CLR_TX_DATA(),即添加(假设此函数无返回值无参数) void  CLR_TX_DATA(void); 3  再次编译 刚才的 warning  即可消失。

KEIl编译STM32的时候,出现了一点问题!!


程序编译的时候通过了!!但是显示警告:

test.c(45): warning:  #223-D: function "Get_Temp"declaredimplicitly


在望山查了好久,终于明白:

这是因为Get_Temp没有在你所引用的文件里加载,虽然你在头文件里声明了一遍!!

但是还是有错误, 你只需要在你所使用的文件里面在声明一次,问题迎刃而解!! 在VC中,好像不会有此warning ,它应该是intel编译器特有的警信息: 如果无法为非 void 返回类型的 C 函数找到正确的原型,则"英特尔® C++ 编译器"会打印以下警告消息: warning #266: function declared implicitly 此问题只会在 C 语言函数中发生。在 C++ 函数中,必须声明正确的原型才能成功编译和链接,所以不会发生上述问题。 如以下C程序 main() { printf("ok\n"); } 就会产生警告 正确的作法是写出函数的定义或#include函数定义的头文件,这样就没问题


keil uv5重命名工程的简单方法 假设原来的工程文件名是first,在工程文件目录中,你可以看到很多主文件名为first的文件,其中有两个文件分别叫做: first.uvopt和first.uvproj。 你只要把这两个文件的主文件名改成你需要的名字,例如second,变成second.uvopt和second.uvproj。其他first文件统统删除。


keil编译提示Execution region RW_IRAM1 size (65552 bytes) exceeds limit (65536 bytes). Region contains 16 错误原因是内存不足。 一方面可以选择内存容量更大的芯片; 另一方面只能进行代码的优化。 一个ARM程序包含3部分:RO,RW和ZI RO是程序中的指令和常量 RW是程序中已初始化变量 ZI是程序中未初始化或初始化为0的变量(ARM C程序中,所有的未初始化变量都会被自动初始化为0)。


由以上3点说明可以理解为: RO就是readonly,   C中的指令以及常量被编译后是RO类型数据 RW就是read/write,C中的已被初始化成非0值的变量编译后市RW类型数据 ZI就是zero initial, C中的未被初始化或初始化为0的变量编译后是ZI类型数据。


在Keil中编译工程成功后,在下面的Bulid Ouput窗口中会输出下面这样一段信息: Program Size: Code=6320  RO-data=4864  RW-data=44  ZI-data=1636

代表的意思: Code :是程序中代码所占字节大小 RO-data :程序中所定义的指令和常量大小 (个人理解 :Read Only) RW-data :程序中已初始化的变量大小 (个人理解”:Read/Write) ZI-Data :程序中未初始化的变量大小 (个人理解 :Zero Initialize) ROM(Flash) size = Code+RO-data+RW-data; RAM size = RW-data+ZI-data 可以通过.map查看占用的flash和ram大小

相关文章
|
传感器 存储 安全
LinkKit SDK 接入阿里云物联网平台(3)| 学习笔记
快速学习 LinkKit SDK 接入阿里云物联网平台(3)
571 0
LinkKit SDK 接入阿里云物联网平台(3)| 学习笔记
|
5G 调度
灵活时隙符号配比 | 带你读《5G 空口设计与实践进阶 》之十八
通过不同时隙格式的选择或不同时隙格式的聚合,NR 可以动态适配当前场景下的业务需求。
灵活时隙符号配比 | 带你读《5G 空口设计与实践进阶 》之十八
STM32学习笔记(4) 高级定时器-两路互补的PWM输出(带死区和刹车控制)
原理:当捕捉到信号的跳变沿时,将CNT的值所存到捕获寄存器CCR中,然后把两次的值相减,就可以得到脉宽或者频率。
1300 0
|
Ubuntu Shell Linux
Shell脚本的常用执行方式、bash 和 sh 的关系、子shell、Centos 默认的解析器是 bash、Linux 提供的 Shell 解析器、Shell 概述、Shell 脚本入门
采用 bash 或 sh+脚本的相对路径或绝对路径(不用赋予脚本+x 权限)、采用输入脚本的绝对路径或相对路径执行脚本(必须具有可执行权限+x)、在脚本的路径前加上“.”或者 source(了解)原因: 前两种方式都是在当前 shell 中打开一个子 shell 来执行脚本内容,当脚本内容结束,则 子 shell 关闭,回到父 shell 中。第三种,也就是使用在脚本路径前加“.”或者 source 的方式,`可以使脚本内容在当前 shell 里执行,而无需打开子 shell!`这也是为什么我们每次要修改完
884 1
Shell脚本的常用执行方式、bash 和 sh 的关系、子shell、Centos 默认的解析器是 bash、Linux 提供的 Shell 解析器、Shell 概述、Shell 脚本入门
|
3月前
|
监控 算法 Unix
【Linux 异步操作】深入理解 Linux 异步通知机制:原理、应用与实例解析
【Linux 异步操作】深入理解 Linux 异步通知机制:原理、应用与实例解析
297 0
|
3月前
|
存储 算法 Linux
Linux内核代码中常用的数据结构
Linux内核代码中常用的数据结构
89 0
|
11月前
|
Linux API
Linux系统上移植`libmodbus`库
在Linux系统上移植`libmodbus`库的过程需要经历一系列步骤,这个库通常用于与Modbus通信协议兼容的设备进行通信。以下是移植`libmodbus`库的一般步骤以及一些常见问题的解决方法。
424 0
|
传感器 监控 网络协议
STM32配合W5500网卡连接MQTT服务器
W5500是一种基于TCP/IP协议的网络通讯芯片,可以提供网络连接功能,相当于是一种嵌入式以太网控制器,具有低功耗、高速传输、易于集成等特点。
816 1
|
NoSQL Linux 编译器
Linux CentOS 内核编译全流程:从安装vmware开始
Linux CentOS 内核编译全流程:从安装vmware开始
553 1
Linux CentOS 内核编译全流程:从安装vmware开始