嵌入式系统C语言编程基础ppt课件_第1页
嵌入式系统C语言编程基础ppt课件_第2页
嵌入式系统C语言编程基础ppt课件_第3页
嵌入式系统C语言编程基础ppt课件_第4页
嵌入式系统C语言编程基础ppt课件_第5页
已阅读5页,还剩76页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

嵌入式系统C语言编程基础,杨高波,SNBC,.2,目录,关于本课程C语言复习编程规范开发高效程序的技巧,.3,为什么学习本课程,会C语法与会用C语言写程序是两个概念C的灵活性以及由此而产生的陷阱非常多TheMostBeautifulLanguageandMostDangerousLanguageintheProgrammingWorld!本课程将嵌入式系统中最基本的(最经常用到的)概念与技巧介绍给大家,.4,小测验?,.5,Quiz1,所有嵌入式系统的主流程最后都进入一个死循环,怎样用C语言实现一个死循环?,.6,Quiz2,while().和do.while()有什么区别?,.7,Quiz3,用变量a给出下列定义:一个整型数一个指向整型数的指针一个有10个整型数的的数组一个有10个指针的数组,该指针是指向一个整型数的,.8,Quiz4,关键字static的作用是什么?,.9,Quiz5,关键字const的作用是什么?,.10,Quiz6,定义一个标准宏MIN,这个宏输入两个参数并返回较小的一个。,.11,Quiz7,嵌入式系统中经常要对变量或寄存器进行位操作。给定一个int型变量a,写两段代码,第一个将a的bit3置为1,第二个将a的bit3置为0。以上两个操作中,要保持其它位不变。,.12,Quiz8,嵌入式系统具有经常去直接访问物理地址的特点。在某工程中,要求设置一绝对地址为0 x5a00的整型变量的值为0 xaa55。写代码去完成这一任务。,.13,Quiz9,下面这段代码的输出是什么?voidfoo(void)unsignedinta=6;intb=-20;(a+b6)?puts(6):puts(6);,.14,Quiz10,请评论下面一段程序代码:voidtest()charstring10;char*str=“0123456789”;strcpy(string,str);,.15,Quiz11,请评论下面一段程序代码:voidGetMemory(char*p)p=(char*)malloc(0 x20);voidTest(void)char*str=NULL;GetMemory(str);strcpy(str,”HelloWorld!”);printf(str);,.16,Quiz12,中断是嵌入式系统的重要组成部分。请评论下面一段中断服务子程序代码:_interruptdoublecompute_area(doubleradius)doublearea=PI*radius*radius;printf(nArea=%f,area);returnarea;,.17,Answer!,.18,Quiz1Answer,while(1).,.19,Quiz2Answer,while().为入口条件循环,即在每次执行循环之前先检查判断条件;do.while()为退出条件循环,即在执行循环之后再检查判断条件。,.20,Quiz3Answer,a)inta;b)int*a;c)inta10;d)int*a10;,.21,Quiz4Answer,在C语言中,关键字static有三个明显的作用:1)在函数体内,一个被声明为静态的变量在这一函数被调用过程中维持其值不变。2)在模块内(但在函数体外),一个被声明为静态的变量可以被模块内所用函数访问,但不能被模块外其它函数访问。它是一个本地的全局变量。3)在模块内,一个被声明为静态的函数只可被这一模块内的其它函数调用。那就是,这个函数被限制在声明它的模块的本地范围内使用。,.22,Quiz5Answer,const是constant的缩写,“恒定不变”的意思。被const修饰的东西都受到强制保护,可以预防意外的变动,能提高程序的健壮性。const常量与#define常量:前者有数据类型,后者只是字符替换(而且可能产生意料不到的错误),所以编译器可以对前者进行安全性检查。,.23,Quiz6Answer,#defineMIN(A,B)(A)=(B)?(A):(B)#define宏的副作用,下面的代码执行后会发生什么事:least=MIN(*p+,b);,.24,Quiz7Answer,constintBIT3=0 x012;,左移,右移,.59,C语言复习,1)循环与分支2)作用域与存储类3)内存与指针4)位操作5)预编译处理,.60,预编译处理,C编译系统在对程序进行编译之前,先进行预处理。C提供的预处理功能主要有以下三种:宏定义文件包含条件编译,.61,预编译处理,1)宏定义类对象宏例:#defineSTX0 x02类函数宏例:#defineSQUARE(x)(x)*(x)几点说明:a.宏定义不是C语句,不在行末加分号;b.宏名有效范围为从定义处到本源文件结束;c.在宏定义时,可以引用已经定义的宏名;d.宏替换不占运行时间,只占编译时间;,.62,预编译处理,2)文件包含:#include预处理器发现#include后,就会寻找后跟的这个文件并把这个文件的内容复制到当前位置替换#include指令;使用#include指令的一些例子:,.63,预编译处理,3)条件编译条件编译指不对整个程序编译,而是编译满足条件的那部分。条件编译有以下几种形式:a.#ifdef标识符程序段1;#else程序段2;#endif它的作用:当标识符在前面已经定义过,则对程序段1进行编译,否则对程序段2进行编译。,.64,预编译处理,b.#ifndef标识符程序段1;#else程序段2;#endif它的作用和#ifdef相反,当标识符之前没被定义过,则对程序段1进行编译,否则就对程序段2进行编译。,.65,预编译处理,c.#if表达式程序段1;#else程序段2;#endif它的作用:当表达式的值为真时,对程序段1进行编译,都则就对程序段2进行编译;,.66,预编译处理,举例,下面是某工程中.h文件中的一段程序,请说明#ifndef/#define/#endif结构的作用。#ifndefDEF_H#defineDEF_H#include#include“graphics.h”.#endif,防止头文件被重复引用,.67,编程规范,.68,编程规范,1)规范的作用改善代码质量提高开发速度增进团队精神养成良好习惯,.69,编程规范,2)编程规范养成良好的编程习惯,.70,开发高效程序的技巧,.71,开发高效程序的技巧,1)ARM编程中局部变量的使用举例,请看一面一段程序:intchecksum(int*data)chari;.for(i=0;iNUM)currentFocus=0;LcdDisplay(menucurrentFocus.text);break;,.79,开发高效程序的技巧,5)Bug的修正别急着改,想想,再想想,想清楚了再动手;考虑所做的修改是否对系统造成新的影响;考虑是否对全局数据结构或其他人的代码造成

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论