摘要: C语言里面的内联函数(inline)与宏定义(#define)探讨先简明扼要,说下关键:1、内联函数在可读性方面与函数是相同的,而在编译时是将函数直接嵌入调用程序的主体,省去了调用/返回指令,这样在运行时速度更快。2、内联函数可以调试,而宏定义是不可以调试的。内联函数与宏本质上是两个不同的概念如果程... 阅读全文
posted @ 2014-06-05 16:08 Andy Cheung 阅读(4550) 评论(0) 推荐(0) 编辑
摘要: 串口通讯—异步通信方式串行通信可以分为两种类型:同步通信、异步通信。1.异步通信的特点及信息帧格式:以起止式异步协议为例,下图显示的是起止式一帧数据的格式:图1 起止式异步通信的特点是:一个字符一个字符地传输,每个字符一位一位地传输,并且传输一个字符时,总是以“起始位”开始,以“停止位”结束,字符... 阅读全文
posted @ 2014-06-05 14:57 Andy Cheung 阅读(397) 评论(0) 推荐(0) 编辑
摘要: 什么是串口?什么是RS-232?什么是RS-422?什么是RS-485?什么是握手?1.什么是串口? 串口是计算机上一种非常通用的设备通信的协议。大多数计算机包含两个基于RS232的串口。串口同时也是仪器仪表设备通用的通信协议;很多GPIB兼容的设备也带有RS-232口。同时,串口通信协议也可以用... 阅读全文
posted @ 2014-06-05 11:51 Andy Cheung 阅读(416) 评论(0) 推荐(0) 编辑
摘要: A.置于变量或者函数前,以标示变量或者函数的定义在别处,提示编译器遇到此变量和函数时在其他地方寻找其定义。B.可用来进行链接指定。1.使用extern声明外部变量1.1在一个文件内声明外部变量 外部变量(即全局变量)是在函数的外部定义的,它的作用域为从变量定义处开始,到本程序文件的末尾。编译时将外... 阅读全文
posted @ 2014-06-03 12:02 Andy Cheung 阅读(1859) 评论(0) 推荐(0) 编辑
摘要: (简要概括:volatile变量有两个作用:一个是告诉编译器不要进行优化;另一个是告诉系统始终从内存中取变量的地址,而不是从缓存中取变量的值)一.前言1.编译器优化介绍:由于内存访问速度远不及CPU处理速度,为提高机器整体性能,在硬件上引入硬件高速缓存Cache,加速对内存的访问。另外在现代CPU中... 阅读全文
posted @ 2014-04-11 11:38 Andy Cheung 阅读(389) 评论(0) 推荐(0) 编辑
摘要: Uart指的是TTL电平的串口;RS232指的是RS232电平的串口。 TTL电平是3.3V的,而RS232是负逻辑电平,它定义+5~+12V为低电平,而-12~-5V为高电平。 Uart串口的RXD、TXD等一般直接与处理器芯片的引脚相连,而RS232串口的RXD、TXD等一般需要经过电平转换... 阅读全文
posted @ 2014-04-07 15:50 Andy Cheung 阅读(1353) 评论(0) 推荐(0) 编辑
摘要: 一、C5509时钟发生器的两个功能1.将从CLKIN引脚输入的时钟信号变换为适当频率的CPU时钟,提供给CPU、外设和其他模块使用;2.将CPU时钟通过可编程分频器输出到CLKOUT引脚。时钟发生器内部有数字锁相环PLL(phaselockring)和时钟模式寄存器(CLKMD)。二、时钟发生器的工作模式1.旁路模式BypassMode 时钟模式寄存器CLKMD中的PLLENABLE位为0,此时锁相环(PLL)被禁用,输出时钟信号频率为输入时钟信号频率的一分频、二分频或者四分频。分频值由BYPASSDIV确定:BYPASSDIV分频值0010121X4旁路模式下LOCK位为0。2.锁定模式L. 阅读全文
posted @ 2013-12-26 23:00 Andy Cheung 阅读(2042) 评论(0) 推荐(0) 编辑
摘要: 一、CMD文件链接命令文件(LinkCommandFiles),以后缀.cmd结尾,简称CMD文件。CMD文件的两大功能是指示存储空间和分配段到存储空间。在编写CMD文件时,主要采用MEMORY和SECTIONS两条伪指令。在281x调试时,可以将程序代码链接到Flash或者RAM,因此对应两种CMD文件。MEMORY伪指令作用:指示存储空间。语法如下:MEMORY{PAGE0:name0[(attr)]:origin=constant,length=constantPAGEn:namen[(attr)]:origin=constant,length=constant}PAGE:用来指示存储空 阅读全文
posted @ 2013-12-24 10:57 Andy Cheung 阅读(5499) 评论(0) 推荐(1) 编辑
摘要: pragma伪指令通过pragma伪指令告诉编译器如何对待特定的函数、对象或代码段。TMS320C28xC/C++编译器支持如下形式的pragma伪指令: CODE_SECTION(func,“sectionname”); DATA_SECTION(symbol,“sectionname”);注意:func和symbol必须在函数外声明或定义。同时,pragma伪指令也必须在函数外,且位于声明、定义或引用func和symbol之前,否则,编译器会给出警告信息。CODE_SECTIONCODE_SECTION用于为函数func在一个名为sectionname的段中指定空间。C语言的标准用法是.. 阅读全文
posted @ 2013-12-24 10:30 Andy Cheung 阅读(648) 评论(0) 推荐(0) 编辑
摘要: TMS320C28x编译器允许在C程序中嵌入汇编指令,通过下面声明实现: asm(“assemblertext”);其中assemblertext指汇编代码。asm指令一般用来处理C/C++语句较难实现的硬件操作。举例: #defineEINTasm("clrcINTM") #defineDINTasm("setcINTM") 阅读全文
posted @ 2013-12-24 10:24 Andy Cheung 阅读(823) 评论(0) 推荐(0) 编辑