头文件常用枚举类型定义
枚举类型名的定义法则

枚举类型名的定义法则枚举类型是一种特殊的数据类型,它可以定义一些特定的常量。
在程序设计中,枚举类型通常用来表示固定集合(例如月份)或状态(例如成功和失败)。
枚举类型名的定义法则如下:1.名称:枚举类型的名称应该是一个合法的标识符。
命名约定通常是使用大写字母和下划线来表示常量,例如:```enum Color { RED, GREEN, BLUE };```2.定义:枚举类型的定义包括了其名称,以及一系列的常量。
通常情况下,枚举类型定义时都会定义一些常量,例如:```enum DayOfWeek { MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY };```3.常量:枚举类型可以有零个或多个常量。
每个常量都有一个名称和一个关联的数字(称为枚举值)。
例如:```enum Color { RED = 1, GREEN = 2, BLUE = 3 };```其中,RED的枚举值为1,GREEN的枚举值为2,BLUE的枚举值为3。
如果没有显式地为常量指定枚举值,则默认为按顺序从0、1、2等依次递增的数字。
4.重复名称:枚举类型中的每个常量都必须有一个唯一的名称。
如果枚举类型中出现了重复的常量名称,则编译器将不通过。
例如:```enum Color { RED, GREEN, RED }; //重复的常量名称,编译器将不通过```5.范围:枚举类型的枚举值可以是任意整数。
通常情况下,枚举类型的枚举值都应该是正整数,因为负数可能会导致一些奇怪的行为。
6.作用域:枚举类型在定义时创建了一个新的命名空间,其中包含该类型的所有常量。
因此,在使用枚举常量时,需要指定作用域,例如:```enum Color { RED, GREEN, BLUE };Color c = Color.RED;```7.嵌套:枚举类型可以嵌套在其他类型中。
例如:```struct Rectangle {enum Edge { LEFT, TOP, RIGHT, BOTTOM };int x1, y1, x2, y2;Edge getLongestEdge();};```在上述示例中,枚举类型Edge嵌套在结构体Rectangle中。
c 枚举定义

c 枚举定义枚举(Enumeration)是C语言中的一种数据类型,用于定义一组具有互相关联的、离散的、有限的取值范围的常量集合。
枚举类型可以简化程序编写过程,提高代码的可读性和可维护性。
本文将介绍C语言中枚举的定义方式,以及在实际应用中的使用方法。
一、枚举的定义C语言中,通过关键字"enum"来定义枚举类型。
枚举类型的定义格式如下:```enum 枚举类型名 {枚举常量1,枚举常量2,...};```其中,枚举类型名是用户自定义的标识符,用于表示整个枚举类型。
枚举常量是具体的取值,用逗号分隔。
枚举常量的值默认从0开始,依次递增。
例如,我们定义一个表示星期的枚举类型:```cenum Week {MON,TUE,WED,THU,FRI,SAT,SUN};```在上述代码中,我们定义了一个枚举类型"Week",其中包含了七个枚举常量,分别表示星期一到星期日。
二、枚举的使用枚举类型可以像其他数据类型一样使用,在程序中可以声明枚举类型的变量,并对其赋值。
例如:```cenum Week today = MON;```上述代码中,我们声明了一个名为"today"的枚举类型的变量,并将其赋值为星期一对应的枚举常量"MON"。
枚举变量的赋值只能使用枚举常量,不能直接使用整数值。
在枚举类型中定义的枚举常量是唯一的,可以直接使用常量名来进行赋值操作,提高了代码的可读性。
枚举类型的变量可以进行比较操作,以判断其是否相等。
例如:```cenum Week day1 = MON;enum Week day2 = TUE;if (day1 == day2) {printf("两个枚举变量相等\n");} else {printf("两个枚举变量不相等\n");}```上述代码中,我们通过比较两个枚举变量"day1"和"day2"的值,得出它们是否相等的结论。
枚举类型enum用法和结构体

枚举类型enum用法和结构体枚举类型(Enum)和结构体(Struct)是C++中的两种重要数据类型。
它们在代码编写过程中起到了不可或缺的作用。
下面我们将为大家详细介绍枚举类型和结构体的使用方法,并解释它们的具体特点和应用场景。
首先,我们来了解一下枚举类型(Enum)。
枚举类型是一种用户自定义的数据类型,它允许程序员定义一个新的取值范围,并使用这些取值来声明变量。
在C++中,枚举类型可以使用关键字“enum”来定义。
定义枚举类型的语法如下所示:```enum 枚举名{枚举值1,枚举值2,...};```枚举类型中的枚举值可以是整型常量,程序员可以根据自己的需要进行定义。
例如,我们可以定义一个星期的枚举类型,如下所示:```enum Weekday{Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday};```在上面的例子中,我们定义了一个名为Weekday的枚举类型,并声明了一周的每一天作为枚举值。
可以看出,枚举类型为我们提供了一种简洁的方式来表示特定对象的有限范围。
接下来,我们来介绍结构体(Struct)。
结构体是一种用户自定义的数据类型,它可以同时存储不同的数据类型,这些数据类型可以是基本数据类型(如整数、浮点数等)或其他自定义的数据类型。
结构体中的数据成员可以通过成员运算符(.)来访问。
结构体的定义语法如下所示:```struct 结构体名{数据类型成员名1;数据类型成员名2;...};```通过结构体,我们可以将多个相关的数据进行整合,并以一个整体的形式来处理。
例如,我们可以定义一个学生的结构体,包含姓名、年龄和成绩,如下所示:```struct Student{string name;int age;float score;};```在上面的例子中,我们定义了一个名为Student的结构体,其中包含了学生的姓名、年龄和成绩。
通过结构体,我们可以轻松地定义和操作多个学生的信息。
c语言枚举类型enum用法

c语言枚举类型enum用法枚举类型enum是C语言中的一种基本数据类型,表示的是一组固定的常量值的集合,又称为枚举集。
它是一种用于定义命名常量的数据类型,可以为不同的变量赋予不同的名称以表示不同的常量值的集合。
一、枚举类型的定义枚举类型是使用关键字enumC语言中定义的数据类型,它用来定义一组字面量常量,每一个常量都有一个整数值,但通常不需要指定,编译器会自动赋值,也可以自行指定每个常量的值。
语法格式如下: enum举名{常量1[=数常量],常量2[=数常量],…常量n[=数常量]}举变量;其中,枚举名是枚举变量的名称,用来为枚举类型起一个有意义的名字;常量1和常量2是枚举类型中的成员,它们都可以给出整数常量;枚举变量代表定义的枚举变量,它是枚举类型的实例。
二、枚举类型的用法1.举类型可以用来简单地表示一系列的整数值,能够把程序中使用的整数常量通过定义有意义的名称来表示,从而有助于让程序的逻辑更加清晰。
2.举类型是C语言中的一种类型,它的变量的值只能是指定的一组枚举值中的一个,由此可以定义简单的逻辑控制语句,它可以用来表示跨越变量边界的逻辑控制,以及一些计算机系统中经常出现的状态量。
3.C语言中,枚举类型可以用作函数的参数,可以用来表示参数的不同状态,用来表示函数可能出现的不同情况。
4.举类型也可以用作结构体成员,可以用来表示不同变量之间的逻辑关系,以及表示多种可能的状态。
三、枚举类型的优缺点1.举类型的优点:它是一种简单的数据类型,可以把程序中使用的整数常量用有意义的名称来表示,从而使程序更易于阅读和理解;它可以用作函数的参数,可以表达不同变量之间的关系,可以表示多种可能的状态。
2.举类型的缺点:它的变量的值只能是指定的一组枚举值中的一个,不能表达复杂的数据类型,因此在一些复杂的程序中,不适用这种数据类型。
综上所述,枚举类型enum是C语言中的一种基本数据类型,用来定义一组字面量常量,用来表示不同变量之间的关系,可以用作函数的参数,可以帮助程序变得更加清晰和易于理解。
c语言 枚举类型enum变量用法

c语言枚举类型enum变量用法【实用版】目录1.枚举类型的概念与特点2.枚举类型的声明与定义3.枚举变量的使用方法4.枚举类型的优缺点分析正文1.枚举类型的概念与特点枚举类型是一种特殊的数据类型,用于表示一组有名字的常量集合。
在 C 语言中,枚举类型可以简化变量的命名和管理,使代码更加简洁易读。
枚举类型的特点有:- 枚举类型属于整型,其值是连续的整数。
- 枚举类型的值可以自定义,也可以自动递增。
- 每个枚举元素都有一个名字,这个名字可以作为变量名使用。
2.枚举类型的声明与定义要声明一个枚举类型,需要使用`enum`关键字,然后列出所有的枚举元素。
枚举元素之间用逗号分隔,最后一个元素后可以跟一个冒号。
例如:```cenum Color {RED,GREEN,BLUE};```定义枚举变量时,可以直接使用枚举类型名和括号。
例如:```cenum Color color = RED;```3.枚举变量的使用方法枚举变量在使用时,可以直接使用枚举元素的名字,或者使用枚举变量名加上括号。
例如:```cif (color == RED) {// 执行红色相关的操作} else if (color == GREEN) {// 执行绿色相关的操作} else if (color == BLUE) {// 执行蓝色相关的操作}```4.枚举类型的优缺点分析枚举类型的优点有:- 使代码更加简洁易读,便于维护。
- 可以避免重复定义常量。
- 可以方便地扩展或修改枚举元素。
枚举类型的缺点有:- 枚举类型只能表示整数范围内的常量集合,对于其他类型的常量集合无能为力。
- 如果枚举元素过多,可能会导致代码的可读性降低。
总的来说,枚举类型在 C 语言中是一种非常有用的数据类型,可以帮助程序员编写更加简洁、易读的代码。
c语言 枚举类

c语言枚举类枚举类是C语言中一种常用的数据类型,它允许我们定义一组具有相同特征的常量。
在本文中,我们将介绍枚举类的定义、使用及其在实际编程中的应用。
一、枚举类的定义与使用枚举类的定义使用关键字enum,后跟枚举类的名称和一对花括号{}。
在花括号中,我们可以列出枚举类中的常量,每个常量使用逗号分隔。
例如,下面是一个表示星期的枚举类的定义:enum Week {Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday};我们可以使用枚举类的名称和常量来声明变量,如下所示:enum Week today;变量today的类型为Week,它只能取枚举类中定义的常量值。
枚举类的常量值默认从0开始递增,但我们也可以为每个常量指定一个特定的值。
例如,我们可以修改上述星期的枚举类定义如下:enum Week {Monday = 1,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday};这样,Monday的值为1,Tuesday的值为2,以此类推。
我们可以使用switch语句来根据枚举类的值执行相应的操作。
例如,我们可以根据今天是星期几来输出不同的信息,如下所示:switch(today) {case Monday:printf("今天是星期一\n");break;case Tuesday:printf("今天是星期二\n");break;// 其他星期的判断省略default:printf("今天是星期日\n");break;}二、枚举类的应用场景枚举类在实际编程中有许多应用场景,下面我们将介绍几个常见的应用场景。
1. 表示状态枚举类可以用来表示某个对象或系统的状态。
例如,我们可以定义一个枚举类来表示计算机的开关状态:enum SwitchState {OFF,ON};这样,我们就可以使用SwitchState类型的变量来表示计算机的开关状态。
枚举类型的用法
枚举类型的⽤法枚举类型的定义枚举类型(enumeration)是C++中的⼀种派⽣数据类型,它是由⽤户定义的若⼲枚举常量的集合。
应⽤举例:enum color_set1 {RED, BLUE, WHITE, BLACK}; //定义枚举类型color_set1enum week {Sun, Mon, Tue, Wed, Thu, Fri, Sat}; //定义枚举类型week枚举变量的使⽤定义枚举类型的主要⽬的是:增加程序的可读性。
枚举类型最常见也最有意义的⽤处之⼀就是⽤来描述状态量,这点将在第9章输⼊输出流类看到。
定义格式:定义枚举类型之后,就可以定义该枚举类型的变量,如:color_set1 color1, color2;亦可类型与变量同时定义(甚⾄类型名可省),格式如下:enum {Sun,Mon,Tue,Wed,Thu,Fri,Sat} weekday1, weekday2;应⽤举例【例2.24】⼝袋中有红、黄、蓝、⽩、⿊五种颜⾊的球若⼲个,每次从⼝袋中取三个不同颜⾊的球,统计并输出所有的取法。
(查看动画演⽰:)#include<iostream>#include<iomanip>using namespace std;int main(){enum color_set {red,yellow,blue,white,black};color_set color;int i,j,k,counter=0,loop;for(i=red;i<=black;i++)for(j=red;j<=black;j++)if(i!=j){ //前两个球颜⾊不同for(k=red;k<=black;k++)if(k!=i&&k!=j){ //第三个球不同于前两个,满⾜要求 counter++;if((counter)%22==0){ //每屏显⽰22⾏cout<<"请按回车键继续";cin.get();}cout<<setw(15)<<counter;/*下⾯输出每种取法,⼀⾏为⼀种取法的三个颜⾊*/ for(loop=1;loop<=3;loop++){switch(loop){case 1: color=(color_set) i; break; //第⼀个是i case 2: color=(color_set) j; break; //第⼆个是j case 3: color=(color_set) k; break; //第三个是k }switch(color){case red: cout<<setw(15)<<"red"; break;case yellow:cout<<setw(15)<<"yellow";break; case blue: cout<<setw(15)<<"blue"; break;case white: cout<<setw(15)<<"white"; break; case black: cout<<setw(15)<<"black"; break;}}cout<<endl; //输出⼀种取法后换⾏}}cout<<"共有:"<<counter<<"种取法"<<endl;return 0;}。
extern typedef 枚举类型-概述说明以及解释
extern typedef 枚举类型-概述说明以及解释1.引言1.1 概述在C语言中,枚举类型是一种用于定义命名常量的数据类型。
通过使用枚举类型,程序员可以对常用的值进行命名,并在代码中使用这些名称来代表相应的值。
这样可以提高代码的可读性和可维护性。
在本文中,我们将讨论extern和typedef关键字在枚举类型中的应用。
extern关键字用于表示一个变量或函数是在其他文件中定义的,而不是当前文件中定义的。
typedef关键字用于给已存在的数据类型起一个新的名称。
结合extern和typedef关键字,我们可以在枚举类型中实现更加灵活和可维护的代码。
通过外部声明(extern)一个枚举类型,我们可以在多个源文件中共享相同的枚举类型定义。
这样,我们可以避免在每个文件中都定义相同的枚举类型,提高代码的重用性和可维护性。
在使用外部声明时,我们需要注意确保所有引用该枚举类型的文件都包含了相应的头文件,并且所有文件都使用了相同的外部声明。
另一方面,typedef关键字在定义枚举类型时也发挥了重要作用。
通过使用typedef,我们可以为一个枚举类型定义一个新的名称,使得代码更易读且语义更清晰。
这样做的好处是,当我们需要修改该枚举类型时,只需要修改typedef定义即可,而不需要修改所有引用该枚举类型的地方。
本文将详细介绍extern和typedef关键字在枚举类型中的具体应用,并通过实例代码加以说明。
通过深入理解这些关键字在枚举类型中的使用方法,我们可以更加灵活地编写高质量的C语言代码。
在接下来的章节中,我们将分别介绍extern关键字和typedef关键字的作用及其在枚举类型中的应用。
1.2文章结构1.2 文章结构:本文将从三个方面来讨论extern typedef在枚举类型中的应用。
首先,我们将介绍extern关键字的作用,包括其在枚举类型中的具体应用场景。
接着,我们将探讨typedef关键字的作用,分析其在枚举类型中的作用和实际应用情况。
枚举定义函数
枚举定义函数一、概述在编程中,我们经常会遇到需要列举出一系列值的情况,比如枚举一个星期的七天、一个班级的学生等。
为了方便管理和使用这些值,我们可以使用枚举(Enumeration)来定义这些常量。
枚举定义函数是一种用于定义枚举类型的函数,通过该函数可以灵活地创建自定义的枚举类型,并使用它们来表示一组相关的常量。
二、枚举的定义方式枚举可以使用不同的方式进行定义,主要有以下几种方式:1. 使用关键字enum进行定义使用关键字enum可以直接定义一个枚举类型,并指定该枚举类型包含的所有常量。
例如,我们可以定义一个表示一周中的七天的枚举类型:enum Weekday {MONDAY,TUESDAY,WEDNESDAY,THURSDAY,FRIDAY,SATURDAY,SUNDAY}上面的代码定义了一个名为Weekday的枚举类型,它包含了七个常量:MONDAY、TUESDAY、WEDNESDAY、THURSDAY、FRIDAY、SATURDAY和SUNDAY。
每个常量都对应着一周中的某一天。
2. 给常量赋初值在定义枚举常量时,可以为每个常量赋予一个初始值。
这种方式可以使得枚举常量更加具体和有意义。
例如,我们可以定义一个表示星期的枚举类型,并为每个枚举常量指定它们对应的星期名称:enum Weekday {MONDAY("星期一"),TUESDAY("星期二"),WEDNESDAY("星期三"),THURSDAY("星期四"),FRIDAY("星期五"),SATURDAY("星期六"),SUNDAY("星期日")}上面的代码中,每个常量除了有一个默认的名称,还有一个对应的中文名称,这样可以更加清晰地表示每个常量的含义。
3. 使用枚举类进行定义除了使用关键字enum,我们还可以使用枚举类进行定义。
c语言枚举类型enum用法
c语言枚举类型enum用法C语言中的枚举类型enum种类丰富,广泛用于软件开发。
它是一种特殊的数据类型,可以把一组相关的数据封装在一个数据类型中,以实现代码的功能需求、细节调整和编程的规范。
本文将介绍枚举类型enum的用法和实现,以及从实际应用中发现的典型例子。
一、什么是枚举类型enum?枚举类型enum是用于表示一组有限且定值的数据的数据类型。
它定义了一组数据的范围,将数据的取值范围限定在某一范围,使得取值只能是由枚举名定义的值,从而提高了数据的确定性、可控性和可维护性。
二、枚举类型enum的声明和定义在C语言中,可以使用typedef关键来定义enum格式:typedef enum{a = 0,b = 1,c = 2} a_b_c;枚举类型enum的声明与定义要分开。
一般情况下,在头文件文件中只需要声明,在源文件中进行定义,但也可以在定义的同时进行声明。
当多个模块要使用定义的枚举类型时,可以在头文件中进行声明,在源文件中进行实现。
三、枚举类型enum的用法1、定义枚举类型enum变量枚举类型enum可以定义一个变量,并把这个变量的值设置为枚举类型enum中的一个值,如:a_b_c x = a;2、使用枚举类型enum作为函数参数枚举类型enum可以作为函数的参数,如:void isA(a_b_c x){if(x == a){printf(it is a}}3、使用枚举类型enum作为返回值枚举类型enum也可以作为函数的返回值,如:a_b_c getX(){return a;}四、典型实例下面是一个使用枚举类型enum保存数据的实际应用实例。
例子:一个简单的矩阵乘法实现,要求输入的矩阵必须是3x3的。
#include<stdio.h>typedef enum{row = 3,col = 3} matrix_size;int matrix[row][col];int main(){int sum = 0;//入矩阵for(int i=0;i<row;++i){for(int j=0;j<col;++j){scanf(%d&matrix[i][j]);}}//阵乘法for(int i=0;i<row;++i){for(int j=0;j<col;++j){sum += matrix[i][j] * matrix[j][i];}}printf(The result is %dsum);return 0;}使用枚举类型enum可以确保矩阵必定是3x3的,从而减少了程序的错误。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.中断号定义typedefenumIRQn{/****** Cortex-M4 Processor Exceptions Numbers ****************************************************************/ NonMaskableInt_IRQn = -14, /*!< 2 Non Maskable Interrupt */MemoryManagement_IRQn = -12, /*!< 4 Cortex-M4 Memory Management Interrupt */BusFault_IRQn = -11, /*!< 5 Cortex-M4 Bus Fault Interrupt */UsageFault_IRQn = -10, /*!< 6 Cortex-M4 Usage Fault Interrupt */SVCall_IRQn = -5, /*!< 11 Cortex-M4 SV Call Interrupt */DebugMonitor_IRQn = -4, /*!< 12 Cortex-M4 Debug Monitor Interrupt */PendSV_IRQn = -2, /*!< 14 Cortex-M4 Pend SV Interrupt */SysTick_IRQn = -1, /*!< 15 Cortex-M4 System Tick Interrupt *//****** STM32 specific Interrupt Numbers **********************************************************************/ WWDG_IRQn = 0, /*!< Window WatchDog Interrupt */PVD_IRQn = 1, /*!< PVD through EXTI Line detection Interrupt */TAMP_STAMP_IRQn = 2, /*!< Tamper and TimeStamp interrupts through the EXTI line */RTC_WKUP_IRQn = 3, /*!< RTC Wakeup interrupt through the EXTI line */FLASH_IRQn = 4, /*!< FLASH global Interrupt */RCC_IRQn = 5, /*!< RCC global Interrupt */EXTI0_IRQn = 6, /*!< EXTI Line0 Interrupt */EXTI1_IRQn = 7, /*!< EXTI Line1 Interrupt */EXTI2_IRQn = 8, /*!< EXTI Line2 Interrupt */EXTI3_IRQn = 9, /*!< EXTI Line3 Interrupt */EXTI4_IRQn = 10, /*!< EXTI Line4 InterruptDMA1_Stream0_IRQn = 11, /*!< DMA1 Stream 0 global Interrupt */DMA1_Stream1_IRQn = 12, /*!< DMA1 Stream 1 global Interrupt */DMA1_Stream2_IRQn = 13, /*!< DMA1 Stream 2 global Interrupt */DMA1_Stream3_IRQn = 14, /*!< DMA1 Stream 3 global Interrupt */DMA1_Stream4_IRQn = 15, /*!< DMA1 Stream 4 global Interrupt */DMA1_Stream5_IRQn = 16, /*!< DMA1 Stream 5 global Interrupt */DMA1_Stream6_IRQn = 17, /*!< DMA1 Stream 6 global Interrupt */ADC_IRQn = 18, /*!< ADC1, ADC2 and ADC3 global Interrupts */CAN1_TX_IRQn = 19, /*!< CAN1 TX Interrupt */CAN1_RX0_IRQn = 20, /*!< CAN1 RX0 Interrupt */CAN1_RX1_IRQn = 21, /*!< CAN1 RX1 Interrupt */CAN1_SCE_IRQn = 22, /*!< CAN1 SCE Interrupt */EXTI9_5_IRQn = 23, /*!< External Line[9:5] Interrupts */TIM1_BRK_TIM9_IRQn = 24, /*!< TIM1 Break interrupt and TIM9 global interrupt */TIM1_UP_TIM10_IRQn = 25, /*!< TIM1 Update Interrupt and TIM10 global interrupt */TIM1_TRG_COM_TIM11_IRQn = 26, /*!< TIM1 Trigger and Commutation Interrupt and TIM11 global interrupt */TIM1_CC_IRQn = 27, /*!< TIM1 Capture Compare Interrupt */TIM2_IRQn = 28, /*!< TIM2 global Interrupt */TIM3_IRQn = 29, /*!< TIM3 global Interrupt */TIM4_IRQn = 30, /*!< TIM4 global Interrupt */I2C1_EV_IRQn = 31, /*!< I2C1 Event Interrupt */I2C1_ER_IRQn = 32, /*!< I2C1 Error InterruptI2C2_EV_IRQn = 33, /*!< I2C2 Event Interrupt */I2C2_ER_IRQn = 34, /*!< I2C2 Error Interrupt */SPI1_IRQn = 35, /*!< SPI1 global Interrupt */SPI2_IRQn = 36, /*!< SPI2 global Interrupt */USART1_IRQn = 37, /*!< USART1 global Interrupt */USART2_IRQn = 38, /*!< USART2 global Interrupt */USART3_IRQn = 39, /*!< USART3 global Interrupt */EXTI15_10_IRQn = 40, /*!< External Line[15:10] Interrupts */RTC_Alarm_IRQn = 41, /*!< RTC Alarm (A and B) through EXTI Line Interrupt */OTG_FS_WKUP_IRQn = 42, /*!< USB OTG FS Wakeup through EXTI line interrupt */TIM8_BRK_TIM12_IRQn = 43, /*!< TIM8 Break Interrupt and TIM12 global interrupt */TIM8_UP_TIM13_IRQn = 44, /*!< TIM8 Update Interrupt and TIM13 global interrupt */TIM8_TRG_COM_TIM14_IRQn = 45, /*!< TIM8 Trigger and Commutation Interrupt and TIM14 global interrupt */TIM8_CC_IRQn = 46, /*!< TIM8 Capture Compare Interrupt */DMA1_Stream7_IRQn = 47, /*!< DMA1 Stream7 Interrupt */FSMC_IRQn = 48, /*!< FSMC global Interrupt */SDIO_IRQn = 49, /*!< SDIO global Interrupt */TIM5_IRQn = 50, /*!< TIM5 global Interrupt */SPI3_IRQn = 51, /*!< SPI3 global Interrupt */UART4_IRQn = 52, /*!< UART4 global Interrupt */UART5_IRQn = 53, /*!< UART5 global Interrupt */TIM6_DAC_IRQn = 54, /*!< TIM6 global and DAC1&2underrun error interrupts */TIM7_IRQn = 55, /*!< TIM7 global interrupt */DMA2_Stream0_IRQn = 56, /*!< DMA2 Stream 0 global Interrupt */DMA2_Stream1_IRQn = 57, /*!< DMA2 Stream 1 global Interrupt */DMA2_Stream2_IRQn = 58, /*!< DMA2 Stream 2 global Interrupt */DMA2_Stream3_IRQn = 59, /*!< DMA2 Stream 3 global Interrupt */DMA2_Stream4_IRQn = 60, /*!< DMA2 Stream 4 global Interrupt */ETH_IRQn = 61, /*!< Ethernet global Interrupt */ETH_WKUP_IRQn = 62, /*!< Ethernet Wakeup through EXTI line Interrupt */CAN2_TX_IRQn = 63, /*!< CAN2 TX Interrupt */CAN2_RX0_IRQn = 64, /*!< CAN2 RX0 Interrupt */CAN2_RX1_IRQn = 65, /*!< CAN2 RX1 Interrupt */CAN2_SCE_IRQn = 66, /*!< CAN2 SCE Interrupt */OTG_FS_IRQn = 67, /*!< USB OTG FS global Interrupt */DMA2_Stream5_IRQn = 68, /*!< DMA2 Stream 5 global interrupt */DMA2_Stream6_IRQn = 69, /*!< DMA2 Stream 6 global interrupt */DMA2_Stream7_IRQn = 70, /*!< DMA2 Stream 7 global interrupt */USART6_IRQn = 71, /*!< USART6 global interrupt */I2C3_EV_IRQn = 72, /*!< I2C3 event interrupt */I2C3_ER_IRQn = 73, /*!< I2C3 error interrupt */OTG_HS_EP1_OUT_IRQn = 74, /*!< USB OTG HS End Point 1 Out global interrupt */OTG_HS_EP1_IN_IRQn = 75, /*!< USB OTG HS End Point 1 In global interrupt */OTG_HS_WKUP_IRQn = 76, /*!< USB OTG HS Wakeup through EXTIinterrupt */OTG_HS_IRQn = 77, /*!< USB OTG HS global interrupt */DCMI_IRQn = 78, /*!< DCMI global interrupt */CRYP_IRQn = 79, /*!< CRYP crypto global interrupt */HASH_RNG_IRQn = 80, /*!< Hash and Rng global interrupt */FPU_IRQn = 81 /*!< FPU global interrupt */} IRQn_Type;2.数据类型定义typedef int32_t s32;typedef int16_t s16;typedef int8_t s8;typedefconst int32_t sc32; /*!< Read Only */typedefconst int16_t sc16; /*!< Read Only */typedefconst int8_t sc8; /*!< Read Only */typedef __IO int32_t vs32;typedef __IO int16_t vs16;typedef __IO int8_t vs8;typedef __I int32_t vsc32; /*!< Read Only */typedef __I int16_t vsc16; /*!< Read Only */typedef __I int8_t vsc8; /*!< Read Only */typedef uint32_t u32;typedef uint16_t u16;typedef uint8_t u8;typedefconst uint32_t uc32; /*!< Read Only */typedefconst uint16_t uc16; /*!< Read Only */typedefconst uint8_t uc8; /*!< Read Only */typedef __IO uint32_t vu32;typedef __IO uint16_t vu16;typedef __IO uint8_t vu8;typedef __I uint32_t vuc32; /*!< Read Only */typedef __I uint16_t vuc16; /*!< Read Only */typedef __I uint8_t vuc8; /*!< Read Only */参考一下的定义typedef signed char int8_t;typedef signed short int int16_t;typedef signed int int32_t;typedef signed __int64 int64_t;/* exact-width unsigned integer types */typedef unsigned char uint8_t;typedef unsigned short int uint16_t;typedef unsigned int uint32_t;typedef unsigned __int64 uint64_t;/* 7.18.1.2 *//* smallest type of at least n bits *//* minimum-width signed integer types */typedef signed char int_least8_t;typedef signed short int int_least16_t;typedef signed int int_least32_t;typedef signed __int64 int_least64_t;/* minimum-width unsigned integer types */typedef unsigned char uint_least8_t;typedef unsigned short int uint_least16_t;typedef unsigned int uint_least32_t;typedef unsigned __int64 uint_least64_t;/* 7.18.1.3 *//* fastest minimum-width signed integer types */typedef signed int int_fast8_t;typedef signed int int_fast16_t;typedef signed int int_fast32_t;typedef signed __int64 int_fast64_t;/* fastest minimum-width unsigned integer types */ typedef unsigned int uint_fast8_t;typedef unsigned int uint_fast16_t;typedef unsigned int uint_fast32_t;typedef unsigned __int64 uint_fast64_t;/* 7.18.1.4 integer types capable of holding object pointers */ typedef signed intintptr_t;typedef unsigned intuintptr_t;/* 7.18.1.5 greatest-width integer types */typedef signed __int64 intmax_t;typedef unsigned __int64 uintmax_t;3.标志状态类型定义typedefenum {RESET = 0, SET = !RESET} FlagStatus, ITStatus;4.功能状态使能类型定义FonctionStatetypedefenum {DISABLE = 0, ENABLE = !DISABLE} FunctionalState;#define IS_FUNCTIONAL_STATE(STATE) (((STATE) == DISABLE) || ((STATE) == ENABLE))5.ADC类型定义typedefstruct{__IO uint32_t SR; /*!< ADC status register, Address offset: 0x00 */__IO uint32_t CR1; /*!< ADC control register 1, Address offset: 0x04 */__IO uint32_t CR2; /*!< ADC control register 2, Address offset: 0x08 */__IO uint32_t SMPR1; /*!< ADC sample time register 1, Address offset: 0x0C */__IO uint32_t SMPR2; /*!< ADC sample time register 2, Address offset: 0x10 */__IO uint32_t JOFR1; /*!< ADC injected channel data offset register 1, Address offset: 0x14 */__IO uint32_t JOFR2; /*!< ADC injected channel data offset register 2, Address offset: 0x18 */__IO uint32_t JOFR3; /*!< ADC injected channel data offset register 3, Address offset: 0x1C */__IO uint32_t JOFR4; /*!< ADC injected channel data offset register 4, Address offset: 0x20 */__IO uint32_t HTR; /*!< ADC watchdog higher threshold register, Address offset: 0x24 */__IO uint32_t LTR; /*!< ADC watchdog lower threshold register, Address offset: 0x28 */__IO uint32_t SQR1; /*!< ADC regular sequence register 1, Address offset: 0x2C */__IO uint32_t SQR2; /*!< ADC regular sequence register 2, Address offset: 0x30 */__IO uint32_t SQR3; /*!< ADC regular sequence register 3, Address offset: 0x34 */__IO uint32_t JSQR; /*!< ADC injected sequence register, Address offset: 0x38*/__IO uint32_t JDR1; /*!< ADC injected data register 1, Address offset: 0x3C */__IO uint32_t JDR2; /*!< ADC injected data register 2, Address offset: 0x40 */__IO uint32_t JDR3; /*!< ADC injected data register 3, Address offset: 0x44 */__IO uint32_t JDR4; /*!< ADC injected data register 4, Address offset: 0x48 */__IO uint32_t DR; /*!< ADC regular data register, Address offset: 0x4C */} ADC_TypeDef;6.GPIO类型定义typedefstruct{__IO uint32_t MODER; /*!< GPIO port mode register, Address offset: 0x00 */__IO uint32_t OTYPER; /*!< GPIO port output type register, Address offset: 0x04 */__IO uint32_t OSPEEDR; /*!< GPIO port output speed register, Address offset: 0x08 */__IO uint32_t PUPDR; /*!< GPIO port pull-up/pull-down register, Address offset: 0x0C */__IO uint32_t IDR; /*!< GPIO port input data register, Address offset: 0x10 */__IO uint32_t ODR; /*!< GPIO port output data register, Address offset: 0x14 */__IO uint16_t BSRRL; /*!< GPIO port bit set/reset low register, Address offset: 0x18 */__IO uint16_t BSRRH; /*!< GPIO port bit set/reset high register, Address offset: 0x1A */__IO uint32_t LCKR; /*!< GPIO port configuration lock register, Address offset: 0x1C */__IO uint32_t AFR[2]; /*!< GPIO alternate function registers, Address offset: 0x20-0x24 */} GPIO_TypeDef;7.RCC类型定义typedefstruct{__IO uint32_t CR; /*!< RCC clock control register, Address offset: 0x00 */__IO uint32_t PLLCFGR; /*!< RCC PLL configuration register, Address offset: 0x04 */__IO uint32_t CFGR; /*!< RCC clock configuration register, Address offset: 0x08 */__IO uint32_t CIR; /*!< RCC clock interrupt register, Address offset: 0x0C */__IO uint32_t AHB1RSTR; /*!< RCC AHB1 peripheral reset register, Address offset: 0x10 */__IO uint32_t AHB2RSTR; /*!< RCC AHB2 peripheral reset register, Address offset: 0x14 */__IO uint32_t AHB3RSTR; /*!< RCC AHB3 peripheral reset register, Address offset: 0x18 */uint32_t RESERVED0; /*!< Reserved, 0x1C */__IO uint32_t APB1RSTR; /*!< RCC APB1 peripheral reset register, Address offset: 0x20 */__IO uint32_t APB2RSTR; /*!< RCC APB2 peripheral reset register, Address offset: 0x24 */uint32_t RESERVED1[2]; /*!< Reserved, 0x28-0x2C */__IO uint32_t AHB1ENR; /*!< RCC AHB1 peripheral clock register, Address offset: 0x30 */__IO uint32_t AHB2ENR; /*!< RCC AHB2 peripheral clock register, Address offset: 0x34 */__IO uint32_t AHB3ENR; /*!< RCC AHB3 peripheral clock register, Address offset: 0x38 */uint32_t RESERVED2; /*!< Reserved, 0x3C */__IO uint32_t APB1ENR; /*!< RCC APB1 peripheral clock enable register, Address offset: 0x40 */__IO uint32_t APB2ENR; /*!< RCC APB2 peripheral clock enable register, Address offset: 0x44 */uint32_t RESERVED3[2]; /*!< Reserved, 0x48-0x4C */__IO uint32_t AHB1LPENR; /*!< RCC AHB1 peripheral clock enable in low power mode register, Address offset: 0x50 */__IO uint32_t AHB2LPENR; /*!< RCC AHB2 peripheral clock enable in low power mode register, Address offset: 0x54 */__IO uint32_t AHB3LPENR; /*!< RCC AHB3 peripheral clock enable in low power mode register, Address offset: 0x58 */uint32_t RESERVED4; /*!< Reserved, 0x5C */__IO uint32_t APB1LPENR; /*!< RCC APB1 peripheral clock enable in low power mode register, Address offset: 0x60 */__IO uint32_t APB2LPENR; /*!< RCC APB2 peripheral clock enable in low power mode register, Address offset: 0x64 */uint32_t RESERVED5[2]; /*!< Reserved, 0x68-0x6C */__IO uint32_t BDCR; /*!< RCC Backup domain control register, Address offset: 0x70 */__IO uint32_t CSR; /*!< RCC clock control & status register, Address offset: 0x74 */uint32_t RESERVED6[2]; /*!< Reserved, 0x78-0x7C */__IO uint32_t SSCGR; /*!< RCC spread spectrum clock generation register, Address offset: 0x80 */__IO uint32_t PLLI2SCFGR; /*!< RCC PLLI2S configuration register, Address offset: 0x84 */} RCC_TypeDef;8.#define __I volatile /*!< Defines 'read only' permissions */#else#define __I volatile const /*!< Defines 'read only' permissions */#endif#define __O volatile /*!< Defines 'write only' permissions */#define __IO volatile /*!< Defines 'read / write' permissions */。