初学C语言的疑惑。请老师们细心指导,灰常感谢。满意了的话再加100分答谢
发布网友
发布时间:2022-07-18 21:16
我来回答
共3个回答
热心网友
时间:2023-10-12 18:23
这里面几个问题回答如下:
问题一:typedef structz 这个函数我不太懂,书上有点抽象;
typedef是表示重新定义一个类型,后面跟着struct就是意味着这个新的类型是一个结构,合起来就是说,通过typedef重新定一个类型,类型的名字叫做“GPIO_InitTypeDef”,这个类型是一个结构体,这个问题明白了吗?那么后面所有涉及到GPIO_InitTypeDef的,都相当于是一个类型定义,就像你定义一个int一样,比如GPIO_InitTypeDefGPIO_InitStructure,就像你定义int a道理是一样的。
问题二:u8GPIO_Inilize(u8 GPIO, GPIO_InitTypeDef *GPIOx) 这个函数名字啥意思
这是这个函数的申明,告诉编译器有一个函数叫做GPIO_Inilize,参数是两个,一个是u8类型,一个是GPIO_InitTypeDef 的指针类型,返回值是u8类型。就像普通的一个函数 int run(int a ,char * b);道理一样。
GPIO_Inilize(2,&GPIO_InitStructure); 这里这个& 是怎么回事?是怎么运算的啊?
&表示地址,也就是这个结构GPIO_InitStructure的指针,很前面的解释是配合的。
问题三:P2M1 &= ~GPIOx->Pin, 这样写的是该怎么理解啊?其中x-> 是个什么东西啊?
其实这个不是x->而是GPIOx->Pin,这个是指针型的结构体引用成员变量的方法,举个例子,如果你定义了一个结构struct s1{int a,char b};你引用结构的a和b,必须使用这样的格式:s1.a或者s1.b,但是如果你定义了一个指针指向s1,即struct * ps1=&s1;这个时候,如果再想引用a或b就必须使用这样的写法:ps1->a和ps1->b
热心网友
时间:2023-10-12 18:24
1,typedef struct不是一个函数,是结构体,用来封装数据的。typedef是用来为这种数据类型定义新的名字的,会影响功能
2,u8GPIO_Inilize(u8 GPIO, GPIO_InitTypeDef *GPIOx) 函数是用来初始化端口的,通过传入的参数,用 if 判断io模式,对应相应的输出。&GPIO_InitStructure表示取GPIO_InitStructure的地址作为参数传入
3,P2M1 &= ~GPIOx->Pin。你去看一下C语言中的运算符自然就能懂了,我一时也将不清楚,还得你自己看了,以后遇到才会做。
我推荐你看几本书吧,看懂了这写书,你的c语言就不成问题了(《c和指针》,《c专家编程》)
热心网友
时间:2023-10-12 18:24
问题一:typedef struct
{
u8Mode;//IO模式, 0,1,2,3
u8Pin;//要设置的端口
} GPIO_InitTypeDef;
这是C语言的基本语法,重新定义一个数据类型,这里是写程序的人自己定义了一个数据类型;这个数据类型中有两个成员,一个是Mode模式和Pin引脚。
问题二:u8GPIO_Inilize(u8 GPIO, GPIO_InitTypeDef *GPIOx) 顾名思义就是初始化GPIO口,这是初始化CPU的IO口,GPIO指定是第几个IO口,GPIOx指定是哪个IO口;
这个函数是写程序的人自己实现的。
GPIO_Inilize(2,&GPIO_InitStructure); 这里这个& 是怎么回事?是怎么运算的啊?
这个调用是用来传参,通过函数来实现的,这里传递的是2,就执行了这样一条语句
if(GPIO == 2)
{
}
问题三:P2M1 &= ~GPIOx->Pin, 这样写的是该怎么理解啊?其中x-> 是个什么东西啊?
这是GPIOx是程序定义的指针,x->是指针指向的成员。
P2M1 &= ~GPIOx->Pin,是指清除某位数据。
问题四:GPIO_InitStructure 和 GPIO_InitTypeDef 是怎么回事啊?
类似于 int a, b; <==> GPIO_InitTypeDefGPIO_InitStructure;
GPIO_InitTypeDef 是刚刚使用typedef定义的一个数据类型;
像这样的用法还有很多,不如说
typedef unsigned int uint ;
typedef unsigned char uchar;
uint a,b;
uchar c,d;
GPIO_InitTypeDef就是自己定义的一个(结构体)数据类型,GPIO_InitStructure就是一个(结构体)成员;
看到你学C语言就用这样的程序开始学习,真心佩服;
希望从简单的单片机的C语言程序学期,没有一点单片机的基础也可以学的,不过希望你找到一个好的教程,好的教学视频,完全可以学会。就看你提问都能问这么多,不错!