沒(méi)有先設(shè)置IO口為輸入模式,直接讀取IO口電平,行嗎?

本人參考《CH32V103應(yīng)用教程——I2C-軟件模擬I2C讀寫EEPROM》 (原網(wǎng)址:21ic電子技術(shù)開(kāi)發(fā)論壇? https://bbs.21ic.com/icview-3060796-1-1.html)一文,通過(guò)修改,成功驅(qū)動(dòng)了TM1637四位數(shù)碼管,但在設(shè)置IO口時(shí),IO口模式均設(shè)置為GPIO_Mode_Out_PP (推挽輸出模式),如果按原文設(shè)置的開(kāi)漏輸出模式則無(wú)法點(diǎn)亮數(shù)碼管(https://bbs.21ic.com/icview-3301228-1-1.html),這也許是TM1637的DIO和CLK引腳沒(méi)有上拉電阻吧?

而在讀取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;
}

這讀取的過(guò)程貌似不用先設(shè)置引腳為輸入模式后再讀取的。

請(qǐng)問(wèn),如果該引腳設(shè)置為推挽輸出模式,而外設(shè)拉低了這個(gè)引腳(甚至短路到GND端),這會(huì)不會(huì)損壞芯片IO口?

只要IO口不配置成模擬輸入,其他的模式都可以讀取端口的電平狀態(tài),對(duì)于你說(shuō)的會(huì)不會(huì)損壞IO口,這樣相當(dāng)于短路了,電流很大,可能會(huì)有100mA,芯片都可能燒壞,所有對(duì)于接外部電平的話,不要直連到VCC,或者GND。


這么說(shuō),IO口設(shè)置成開(kāi)漏輸出模式+外接上拉電阻,比起推挽輸出模式更保險(xiǎn)。或者,在讀取之前,先將IO口設(shè)置成數(shù)字輸入。


如果IO口設(shè)置成GPIO_Mode_IPU,該引腳的輸出電平應(yīng)該無(wú)法控制吧?

還有一個(gè)問(wèn)題,就是CH32V103內(nèi)部的上拉電阻大約是多少K?


您好,若需要控制引腳輸出高低電平,需配置在輸出模式下。關(guān)于V103內(nèi)部的上拉電阻,可參考數(shù)據(jù)手冊(cè)IO端口特性介紹那一小節(jié),如下圖。數(shù)據(jù)手冊(cè)下載鏈接如下:

http://www.findthetime.net/downloads/CH32V103DS0_PDF.html?

image.png


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频