![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
c/c++
吾息
这个作者很懒,什么都没留下…
展开
-
TI的CCS如何在编译时发出提示信息
TI的CCS中没有#pragma message()预处理指令,可以使用#warn原创 2019-08-05 19:40:13 · 697 阅读 · 0 评论 -
C语言中,头文件和源文件的关系
首先需要弄明白编译器的工作过程,一般说来编译器会做以下几个过程:1.预处理阶段2.词法与语法分析阶段3.编译阶段,首先编译成纯汇编语句,再将之汇编成跟CPU相关的二进制码,生成各个目标文件 (.obj文件)4.连接阶段,将各个目标文件中的各段代码进行绝对地址定位,生成跟特定平台相关的可执行文件,当然,最后还可以用objcopy生成纯二进制码,也就是去掉了文件格式信息。(生成.exe文...转载 2019-08-05 16:23:32 · 1375 阅读 · 0 评论 -
C语言的头文件和宏定义的一种使用方法
该方法实现功能:当编译main.c文件时,首先#define MAIN 1,所以在解析头文件variables.h时,根据variable.h中设定的关于MAIN的条件编译,会将A_string[]数组作为变量定义放置在main.c中,生成main.obj目标文件。而如下的flash.c文件在进行编译时,由于没有定义MAIN,所以在解析variable.h时,相当于extern char ...原创 2019-08-05 15:47:08 · 554 阅读 · 0 评论 -
const, volatile同时修饰一个变量
文章基础:(1) “编译器一般不为const变量分配内存,而是将它保存在符号表中,这使得它成为一个编译期间的值,没有了存储与读内存的操作。”(2)volatile的作用是“告诉编译器,i是随时可能发生变化的,每次使用它的时候必须从内存中取出i的值”。...转载 2019-08-04 16:10:51 · 859 阅读 · 0 评论 -
TMS320F28335将程序从FLASH搬移到RAM中运行详细步骤
(一)添加DSP28xxx_SectionCopy_nonBIOS.asm到工程目录下DSP28xxx_SectionCopy_nonBIOS.asm中为程序拷贝函数。定义了段名为copysections,之后将会在CMD文件添加该段。(二)修改启动文件DSP2833x_CodeStartBranch.asm程序运行后从FLASH启动,会调用code_start关闭看门狗后通过调用c_...转载 2019-08-04 09:42:09 · 3463 阅读 · 0 评论 -
将DSP的flash里面的函数转移到ram中的步骤
对于独立的嵌入式系统,需要把程序存入non-volitale存储单元中,常用的也就是flash。但是程序在flash中运行相对在ram中行,速度会变慢很多,具体有多慢,拿28335来说吧,假设系统时钟为150MHz,在ram中运行时频率还是150Mhz,而放在flash中,频率会降到90-95Mhz,参照Ti手册SPRA958L,这对于有些对实时性要求较高的函数功能,是不可接受的。所以在系统上电时...转载 2019-08-04 09:09:57 · 787 阅读 · 0 评论 -
关于MAP文件的一点认识 - DSP数字信号处理
来自:http://www.360doc.com/content/09/0407/15/799_3050704.shtml本文来自于HELLODSP交流网 作者:huttu近来有很多朋友问及MAP文件,下面我就对MAP文件的一点理解和大家分享。MAP文件是CCS软件编译后产生的有关DSP用到所有程序、数据及IO空间的一种映射文件。一、生成方法 MAP文件主要有两种生成方法,一种是...转载 2019-08-03 17:15:43 · 2834 阅读 · 0 评论 -
c语言中,while(1)语句使用break语句跳出循环
这个要分情况的:1:本身条件就有出口,这样的话,可以自然退出,也可以认为退出2:如果本身条件永远不可能满足,例如:while(1)像这种的话想要退出的话就必须人为干涉,例如intnum= 0;while(1){num++; if(num>1000)break;}注意:一般这类的循环都是用break退出的。while(1)中执行到属于while自身的break语句。break...转载 2019-07-05 08:29:46 · 8281 阅读 · 0 评论 -
C语言宏定义和宏定义函数
转自:http://blog.sina.com.cn/s/blog_861912cd0100tc94.html要写好C语言,漂亮的宏定义是非常重要的。宏定义可以帮助我们防止出错,提高代码的可移植性和可读性等。 在软件开发过程中,经常有一些常用或者通用的功能或者代码段,这些功能既可以写成函数,也可以封装成为宏定义。那么究竟是用函数好,还是宏定义好?这就要求我们对二者进行合理的取舍。 ...转载 2018-12-04 08:39:48 · 17746 阅读 · 0 评论 -
C语言带参数宏定义
转自:http://c.biancheng.net/cpp/html/66.htmlC语言允许宏带有参数。在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数,这点和函数有些类似。对带参数的宏,在调用中,不仅要宏展开,而且要用实参去代换形参。带参宏定义的一般形式为:#define 宏名(形参列表) 字符串在字符串中含有各个形参。带参宏调用的一般形式为:宏名(实参列表);...转载 2018-12-04 08:38:08 · 459 阅读 · 0 评论 -
大端小端与数字的二进制存储
部分1:大端小端概念摘自:https://jocent.me/2017/07/25/big-little-endian.html计算机系统中内存是以字节为单位进行编址的,每个地址单元都唯一的对应着1个字节(8 bit)。这可以应对char类型数据的存储要求,因为char类型长度刚好是1个字节,但是有些类型的长度是超过1个字节的(字符串虽然是多字节的,但它本质是由一个个char类型组成的类似...转载 2019-08-08 22:18:23 · 1095 阅读 · 0 评论