嵌入式C语言编程.ppt

嵌入式C语言编程.ppt

ID:51489268

大小:236.00 KB

页数:26页

时间:2020-03-24

嵌入式C语言编程.ppt_第1页
嵌入式C语言编程.ppt_第2页
嵌入式C语言编程.ppt_第3页
嵌入式C语言编程.ppt_第4页
嵌入式C语言编程.ppt_第5页
资源描述:

《嵌入式C语言编程.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、NanGuanEmbeddedSystemLabSchoolofInformationScienceandEngineeringNortheasternUniversityMemory2005-10-7Declaration以下涉及内容未必对所有的嵌入式系统都适用。只针对共性问题进行探讨所举例子仅为示意MemoryVolatile关键字Thevolatilekeywordisatypequalifierusedtodeclarethatanobjectcanbemodifiedintheprogrambysomethingotherthans

2、tatements,suchastheoperatingsystem,thehardware,oraconcurrentlyexecutingthread.定义存储器映射寄存器时,必须使用volatile关键字。#defineSCI_01*(volatileunsignedint*)0x5808MemoryObjectsdeclaredasvolatilearenotusedinoptimizationsbecausetheirvaluecanchangeatanytime.Thesystemalwaysreadsthecurrentvalu

3、eofavolatileobjectatthepointitisrequested,evenifthepreviousinstructionaskedforavaluefromthesameobject.Also,thevalueoftheobjectiswrittenimmediatelyonassignment.While(SCI_01==0);tempVarInt=RXBUF;MemoryOneuseofthevolatilequalifieristoprovideaccesstomemorylocationsusedbyasynchr

4、onousprocessessuchasinterrupthandlers.intmain(void) { while (1) { if (i)dosomething(); } } /* Interrupt service routine. */ interruptvoid ISR_2(void) {i=1;}Memory栈和堆C语言中的存储区域:1.全局变量区:程序开始分配,程序结束释放2.常量区:程序开始分配,程序结束释放3.堆:程序员分配释放4.栈:编译器自动分配释放Memoryinta=0;//全局初始化区char*p1;//全局未初

5、始化区main() {intb;//栈chars[]="abc";//栈char*p2;//栈char*p3="123456";//123456在常量区,p3在栈上。staticintc=0;//全局(静态)初始化区p1=(char*)malloc(10); p2=(char*)malloc(20); //分配得来得10和20字节的区域在堆区。strcpy(p1,"123456"); //123456放在常量区,编译器可能会将它与p3所指向的"123456"优化成一块。 }Memory栈是系统提供的数据结构,是C程序运行的基础任何系统

6、都提供栈指针寄存器通过栈实现程序跳转等基本程序操作一个未经任何初始化的程序main(){…subFunc(i);}执行时会出现问题???Memory硬件堆栈与软件堆栈硬件堆栈当CPU进入子程序或进入中断服务程序时,返回地址被自动压入硬件堆栈软件堆栈函数的参数是通过软件堆栈传递的,函数的出口地址存放在软件堆栈里,函数用到的局部变量也是在软件堆栈里分配的.都是必须的MemoryPOP&PUSHPUSH把累加器的内容复制到堆栈顶部POP指令把堆栈顶部的数值复制到累加器POPD&PSHDPSHD把数据存储器的值压入软件堆栈顶部POPD指令把数值从软件

7、堆栈顶部弹出至数据存储器软件压栈与弹栈SP++SP—Memoryvoidmain(void){unsignedinti;Test(2,10);}intTest(inti,intj){inttemp;temp=0;……returntemp;}AADD#-3,SPMOVT1,*SP(#01h)MOVT0,*SP(#00h)MOV#0,*SP(#02h)……MOVAR1,*SP(#02h)MOVAR1,T0AADD#3,SPRETMOV#10,T1MOV#2,T0CALLTestAADD#-4,SPPOPD*SP(#00h)MOVT1,*SP(#0

8、2h)MOVT0,*SP(#01h)MOV#0,*SP(#03h)……MOVAR1,*SP(#03h)MOVAR1,T0PSHD*SP(#00h)AADD#3,SP

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。