OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 1941|回复: 10

关于GPIOX,求大神解答!!

[复制链接]

16

主题

72

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2019-4-27
在线时间
44 小时
发表于 2019-6-9 22:37:03 | 显示全部楼层 |阅读模式
1金钱
//初来乍到的STM32小白白白一枚,请大家多多包涵,问题可能很“小白”
//举个例子:
void GPIO_SetBits(GPIO_TypeDef *GPIOx,uint16_t GPIO_Pin);
//里面的 GPIOX为什么可以直接用GPIOA,GPIOB,GPIOC.......等直接替换,而程序里面没有定义过GPIOX啊,
//实在想不通????

最佳答案

查看完整内容[请看2#楼]

形参和实参的区别 形参出现在函数定义中,在整个函数体内都可以使用, 离开该函数则不能使用。 实参出现在主调函数中,进入被调函数后,实参变量也不能使用。 形参和实参的功能是作数据传送。发生函数调用时, 主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。 1.形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存单元。因此,形参只有在函数内部有效。 函 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

10

主题

293

帖子

0

精华

高级会员

Rank: 4

积分
623
金钱
623
注册时间
2019-6-3
在线时间
107 小时
发表于 2019-6-9 22:37:04 | 显示全部楼层
形参和实参的区别

形参出现在函数定义中,在整个函数体内都可以使用, 离开该函数则不能使用。

实参出现在主调函数中,进入被调函数后,实参变量也不能使用。

形参和实参的功能是作数据传送。发生函数调用时, 主调函数把实参的值传送给被调函数的形参从而实现主调函数向被调函数的数据传送。

1.形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存单元。因此,形参只有在函数内部有效。 函数调用结束返回

主调函数后则不能再使用该形参变量。

2.实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形

参。 因此应预先用赋值,输入等办法使实参获得确定值。

3.实参和形参在数量上,类型上,顺序上应严格一致, 否则会发生“类型不匹配”的错误。

4.函数调用中发生的数据传送是单向的。 即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。 因此在函数调用过程中,形参的值

发生改变,而实参中的值不会变化。

5.当形参和实参不是指针类型时,在该函数运行时,形参和实参是不同的变量,他们在内存中位于不同的位置,形参将实参的内容复制一份,在该

函数运行结束的时候形参被释放,而实参内容不会改变。

而如果函数的参数是指针类型变量,在调用该函数的过程中,传给函数的是实参的地址,在函数体内部使用的也是实参的地址,即使用的就是实参

本身。所以在函数体内部可以改变实参的值。
回复

使用道具 举报

16

主题

72

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2019-4-27
在线时间
44 小时
 楼主| 发表于 2019-6-9 22:37:47 | 显示全部楼层
有木有人啊
回复

使用道具 举报

16

主题

72

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2019-4-27
在线时间
44 小时
 楼主| 发表于 2019-6-9 22:46:59 | 显示全部楼层
人呢,,,,,,,,,,,,
回复

使用道具 举报

2

主题

20

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1159
金钱
1159
注册时间
2019-3-25
在线时间
101 小时
发表于 2019-6-9 23:35:06 | 显示全部楼层
你可以查下这个定义
回复

使用道具 举报

22

主题

271

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
405
金钱
405
注册时间
2019-3-21
在线时间
107 小时
发表于 2019-6-10 08:52:15 | 显示全部楼层
去看库函数啊,里面都有定义的
回复

使用道具 举报

1

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
98
金钱
98
注册时间
2017-12-7
在线时间
16 小时
发表于 2019-6-10 08:55:37 | 显示全部楼层
GPIOA,GPIOB,GPIOC等是实参,GPIOX是形参。看看C语言的书就知道了
回复

使用道具 举报

6

主题

359

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1604
金钱
1604
注册时间
2017-12-18
在线时间
173 小时
发表于 2019-6-10 09:06:43 | 显示全部楼层
建议先去补补C语音的基础知识
回复

使用道具 举报

10

主题

293

帖子

0

精华

高级会员

Rank: 4

积分
623
金钱
623
注册时间
2019-6-3
在线时间
107 小时
发表于 2019-6-10 09:57:43 | 显示全部楼层
void GPIO_SetBits(GPIO_TypeDef *GPIOx,uint16_t GPIO_Pin)函数里面有这么一句—assert_param(IS_GPIO_ALL_PERIPH(GPIOx))定义了
回复

使用道具 举报

10

主题

293

帖子

0

精华

高级会员

Rank: 4

积分
623
金钱
623
注册时间
2019-6-3
在线时间
107 小时
发表于 2019-6-10 09:58:08 | 显示全部楼层
#define IS_GPIO_ALL_PERIPH(PERIPH) (((PERIPH) == GPIOA) || \
                                    ((PERIPH) == GPIOB) || \
                                    ((PERIPH) == GPIOC) || \
                                    ((PERIPH) == GPIOD) || \
                                    ((PERIPH) == GPIOE) || \
                                    ((PERIPH) == GPIOF) || \
                                    ((PERIPH) == GPIOG))
回复

使用道具 举报

16

主题

72

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
212
金钱
212
注册时间
2019-4-27
在线时间
44 小时
 楼主| 发表于 2019-6-10 10:40:38 | 显示全部楼层
dc8421 发表于 2019-6-10 08:55
GPIOA,GPIOB,GPIOC等是实参,GPIOX是形参。看看C语言的书就知道了

谢谢解答,第一次接触以结构体定义的参数,看的有点蒙,昨天重点看了下结构体,大概了解了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-17 03:55

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表