野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 18843|回复: 2

初学者 关于GPIO初始化的问题

[复制链接]
发表于 2018-3-31 15:47:32 | 显示全部楼层 |阅读模式
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_4 | GPIO_Pin_5 |
  GPIO_Pin_8 | GPIO_Pin_9
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  GPIO_Init(GPIOD, &GPIO_InitStructure);




我见别人有上面这样写的初始化不同的IO口只写了一次 作用可以实现GPIOD
的PIN 0 1 4 5 8 9 的速度和模式是50 和浮空输入 ,那比如如果我现在还想对GPIOD的pin6 pin7 设置成推挽输出 10MHZ
我就又写了
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7
  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  GPIO_Init(GPIOD, &GPIO_InitStructure);

假设上面的代码都在一个初始化函数内
那么这样子GPIOD的输出模式和速度会不会被全部又改成了 推挽和10MHZ?使一开始的初始化被覆盖?
请各位大神指导一下,很疑惑

回复

使用道具 举报

发表于 2018-3-31 17:44:38 | 显示全部楼层
不会,改变GPIO_InitStructure结构体的值之前,先调用GPIO_Init函数对你前面的014589引脚赋值就可以了,赋值之后就会写入到寄存器。
后面再调用GPIO_Init配置6,7引脚时,只会配置6 7引脚
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-31 18:40:18 | 显示全部楼层
flyleaf 发表于 2018-3-31 17:44
不会,改变GPIO_InitStructure结构体的值之前,先调用GPIO_Init函数对你前面的014589引脚赋值就可以了,赋 ...

嗯,明白了,万分感谢
回复 支持 反对

使用道具 举报

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

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2025-12-6 01:48 , Processed in 0.050572 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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