OpenEdv-开源电子网

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

按键实验,wk_upIO初始化为什么可以省略普通输入模式和速度设置

[复制链接]

6

主题

11

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2019-4-24
在线时间
8 小时
发表于 2020-4-3 12:36:50 | 显示全部楼层 |阅读模式
1金钱
为什么按键IO初始化,KEY1-3有模式和速度,wk_up却没有,我把两条语句加上去之后也没什么影响。我分析原因可能有两个:1、上面已经初始化过一组IO(PE2-PE4),所以下面(PA0)可以省略,但是一个是E组一个是A组,应该不能共用语句吧  2、IO初始化的时候是不是有默认设置,可以省略掉这两句;有些疑惑

现在对于IO初始化的认知是这样的:
输出的话就要设置引脚、输出模式、推挽还是开漏、上下拉、速度
输入就设置引脚、输入模式、上下拉、速度

不知道有没有什么欠缺,希望大家说说自己的看法


1585887955(1).png


最佳答案

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

问题1. GPIO_InitStructure这是个结构体变量,一开始将它的成员(GPIO_Pin、GPIO_Mode、GPIO_Speed、GPIO_PuPd)配置了,然后调用函数GPIO_Init(GPIOE,GPIO_InitStructure),两个参数分为是对应的GPIO端口和要进行初始化的GPIO_InitStructure结构体变量,其作用是将GPIO_InitStructure中的相关属性配置到你填的那个GPIO口中,你在下面调用函数配置GPIOA,GPIO_InitStructure这个变量,本来它就已经赋值了,那它就不需要赋值,除非你要配置的这 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

31

主题

108

帖子

0

精华

初级会员

Rank: 2

积分
174
金钱
174
注册时间
2019-10-31
在线时间
155 小时
发表于 2020-4-3 12:36:51 | 显示全部楼层
问题1. GPIO_InitStructure这是个结构体变量,一开始将它的成员(GPIO_Pin、GPIO_Mode、GPIO_Speed、GPIO_PuPd)配置了,然后调用函数GPIO_Init(GPIOE,GPIO_InitStructure),两个参数分为是对应的GPIO端口和要进行初始化的GPIO_InitStructure结构体变量,其作用是将GPIO_InitStructure中的相关属性配置到你填的那个GPIO口中,你在下面调用函数配置GPIOA,GPIO_InitStructure这个变量,本来它就已经赋值了,那它就不需要赋值,除非你要配置的这个端口不同,比如上面引脚不同、模式不同、速度、上下拉、推挽开漏不同,才需要再次写
问题2.跟上面一样,寄存器都有默认复位值
回复

使用道具 举报

6

主题

11

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2019-4-24
在线时间
8 小时
 楼主| 发表于 2020-4-3 15:18:09 | 显示全部楼层
本帖最后由 houzixiansen 于 2020-4-3 15:22 编辑
lt1394466592 发表于 2020-4-3 14:00
问题1. GPIO_InitStructure这是个结构体变量,一开始将它的成员(GPIO_Pin、GPIO_Mode、GPIO_Speed、GPIO_PuP ...

所以下面的PA0相比较PE2-4,只改变了引脚和下拉,模式和速度没变才不需要重新设置。如果是这样的话,我不能理解的是,这明明是两组IO,一个是A一个是E,我设置E的时候也会对A造成影响吗
回复

使用道具 举报

6

主题

11

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2019-4-24
在线时间
8 小时
 楼主| 发表于 2020-4-3 15:26:25 | 显示全部楼层
lt1394466592 发表于 2020-4-3 14:00
问题1. GPIO_InitStructure这是个结构体变量,一开始将它的成员(GPIO_Pin、GPIO_Mode、GPIO_Speed、GPIO_PuP ...

我想我懂了,我上面是先编辑GPIO_InitStructure这个结构体变量,然后把它写进GPIO_E中,下面要把它再一次写进GPIO_A中,所以我一直都是在对结构体变量进行编辑,跟是哪个IO无关,我要改变哪个成员的值直接在结构体中改,然后写进具体IO就行了,对吧
回复

使用道具 举报

31

主题

108

帖子

0

精华

初级会员

Rank: 2

积分
174
金钱
174
注册时间
2019-10-31
在线时间
155 小时
发表于 2020-4-3 15:30:30 | 显示全部楼层
houzixiansen 发表于 2020-4-3 15:26
我想我懂了,我上面是先编辑GPIO_InitStructure这个结构体变量,然后把它写进GPIO_E中,下面要把它再一次 ...

是的,你对这个结构体变量的成员改值,然后函数在进行IO配置的时候是读你这个结构体内成员的值来配置的
回复

使用道具 举报

6

主题

11

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2019-4-24
在线时间
8 小时
 楼主| 发表于 2020-4-3 22:12:03 | 显示全部楼层
lt1394466592 发表于 2020-4-3 15:30
是的,你对这个结构体变量的成员改值,然后函数在进行IO配置的时候是读你这个结构体内成员的值来配置的

感谢解惑
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-2 22:25

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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