本人参考《CH32V103应用教程——I2C-软件模拟I2C读写EEPROM》 (原网址:21ic电子技术开发论坛? https://bbs.21ic.com/icview-3060796-1-1.html)一文,通过修改,成功驱动了TM1637四位数码管,但在设置IO口时,IO口模式均设置为GPIO_Mode_Out_PP (推挽输出模式),如果按原文设置的开漏输出模式则无法点亮数码管(https://bbs.21ic.com/icview-3301228-1-1.html),这也许是TM1637的DIO和CLK引脚没有上拉电阻吧?
而在读取DIO(原文是SDA)引脚,原代码为:
uint8_t GPIO_ReadInputDataBit(GPIO_TypeDef* GPIOx, uint16_t GPIO_Pin)
{
uint8_t bitstatus = 0x00;
if ((GPIOx->INDR & GPIO_Pin) != (uint32_t)Bit_RESET)
{
bitstatus = (uint8_t)Bit_SET;
}
else
{
bitstatus = (uint8_t)Bit_RESET;
}
return bitstatus;
}
这读取的过程貌似不用先设置引脚为输入模式后再读取的。
请问,如果该引脚设置为推挽输出模式,而外设拉低了这个引脚(甚至短路到GND端),这会不会损坏芯片IO口?