《智能光电系统设计》课件 项目5 嵌入式C语言.pptx

《智能光电系统设计》课件 项目5 嵌入式C语言.pptx

项目5嵌入式C语言

任务目标1、通过对嵌入式C语言的学习,温习C语言基本语法,并了解嵌入式C语言的若干要点。2、学会分析程序的执行过程,进而理解嵌入式C语言的普通C语言的区别,即嵌入式C语言需要驱动硬件,因此更多地处于往复循环过程中。

5.1数据类型在C语言中有int、char、float等数据类型,在嵌入式程序编写时,这些数据类型依然可用,不过嵌入式C语言中,对正整数做了一些特殊的定义,如uint8_t、uint16_t、uint32_t等,uint8_t表示8位的无符号字符型数据,可从0取到0xFF,uint16_t表示16位的无符号字符型数据,可从0取到0xFFFF,uint32_t表示32位的无符号字符型数据,可从0取到0xFFFFFFFF。举例来说,如果写定义一个名为n1的变量,可写:uint8_tn1=0xFF;但是,如果uint8_tn1=0xFFF;在编译时会有警告,因为uint8_t的最大值是0xFF,0XFFF已经超过其取值范围。在有些系统中,也有用U8、U16、U32分别表示8位、16位、32位无符号字符型数据的。uint16_t比uint8_t多占用了1倍的存储空间,因此在编写程序时,可依据数据的大小选用不同的数据长度来定义。

5.2结构体5.2.1C语言中的结构体结构体是C语言中的一种数据类型,是由不同类型的数据组合成的一个整体,这些组合在一个整体中的数据是互相联系的,这样的数据结构称为结构体。举例来说:structdate//声明一个结构体类型{intyear;intmonth;intday;}data是一个结构体,也是一种数据类型,其中的三个成员用来表示年、月、日,具有明显的共性联系。

5.2.1C语言中的结构体再举例来说:structstudent{intnum;charname[20];charsex;intage;structdatebirthday;charaddr[30];}student1,student2;student是一个结构体类型,其中的一个成员是structdatebirthday;这个成员本身也是一个data类型的结构体,结构体变量名是birthday。student1和student2是student类型的结构体变量。成员的赋值方式举例如下:student1.num=10010;student1.birthday.month=7;此时,如果再定义一个指针变量p,指向结构体student,即structstudent*p;

5.2.1C语言中的结构体再举例来说:structstudent{intnum;charname[20];charsex;intage;structdatebirthday;charaddr[30];}student1,student2;此时,如果再定义一个指针变量p,指向结构体student,即structstudent*p;则可以通过指针p给结构体变量student1或student2赋值。方法如下:p=student1;(*p).num=10011;等价于student1.num=10011;在C语言中,为了使用方便和使之直观,可以把(*p).num改用p-num来代替,它表示*p所指向的结构体变量中的num成员,同样,(*p).name等价于p-name。

5.2.2嵌入式语句中的结构体举例嵌入式系统中大量用到结构体,在使用时,也可以把其看成一种特殊的数据类型。比如typedefstruct{__IOuint32_tCRL;__IOuint32_tCRH;__IOuint32_tIDR;__IOuint32_tODR;__IOuint32_tBSRR;__IOuint32_tBRR;__IOuint32_tLCKR;}GPIO_TypeDef;就是定义了一个名为GPIO_TypeDef的结构体,其含有CRL等7个成员。

5.2.2嵌入式语句中的结构体举例#defineGPIOA_BASE(APB2PERIPH_BASE+0L)语句表示将GPIOA端口的地址赋给GPIOA_BASE。#defineGPIOA((GPIO_TypeDef*)GPIOA_BASE)语句中,((GPIO_TypeDef*)

文档评论(0)

1亿VIP精品文档

相关文档