21ic问答首页 -
- /* Free I2C_SCL and I2C_SDA */
- gpioConfigStruct.mode = GPIO_MODE_OUT;
- gpioConfigStruct.speed = GPIO_SPEED_50MHz;
- gpioConfigStruct.outtype = GPIO_OUT_TYPE_PP;
- gpioConfigStruct.pupd = GPIO_PUPD_NO;
- gpioConfigStruct.pin = GPIO_PIN_8;
- GPIO_Config(GPIOB, &gpioConfigStruct);
- gpioConfigStruct.pin = GPIO_PIN_9;
- GPIO_Config(GPIOB, &gpioConfigStruct);
看厂家提供的库函数实例,里面有这么一段,不明所以,这 一段作用是什么?
赞0
客气
评论
2025-08-11
赞0
原来如此,这个理由很充分,受教了,感谢。
评论
2025-08-08
赞0
具体流程可见:
先将 PB8、PB9 配置为普通推挽输出(GPIO_MODE_OUT、GPIO_OUT_TYPE_PP),并输出高电平(GPIO_SetBit(GPIOB, GPIO_PIN_8 / 9))。
之后将其切换到复用功能(GPIO_MODE_AF),指定 GPIO_ConfigPinAF(GPIOB, GPIO_PIN_SOURCE_8/9, GPIO_AF_PIN1) 以将 PB8、PB9 连接到 I2C1 的复用功能。
同时将输出类型设为开漏(GPIO_OUT_TYPE_OD),满足 I2C 硬件协议对开漏输出的要求。
目的:
先把引脚配置成普通推挽输出并设高电平,再切换到开漏复用模式,作用就是让引脚在上电或初始化前保持高电平,类似于“预上拉”,防止上电过程中的不确定状态造成干扰或错误的总线读写。
评论
2025-08-08
赞0
评论
2025-08-08
赞0
评论
2025-08-07
您需要登录后才可以回复 登录 | 注册