背景
STM32G071的PD0,PD2作為外部中斷使用,外部接10K上拉電阻拉到3.3V。外部設(shè)備被觸發(fā)后電平變?yōu)榈碗娖?,平常保持高電?a target="_blank">信號(hào)。
問題
在以上背景下,按道理外部設(shè)備正常時(shí)(未觸發(fā)中斷),IO口輸入電平應(yīng)該是3.3V。但是實(shí)際上測(cè)量到的卻是0.9V,這跟觸發(fā)后的0V,同樣會(huì)被單片機(jī)識(shí)別為低電平,故無法產(chǎn)生電平跳變而觸發(fā)中斷。
分析解決
查閱STM32G0數(shù)據(jù)手冊(cè)可知:

這個(gè)引腳的電平類型為FT_c,我們知道FT是容忍5V的意思,那么FT_c是什么意思?不妨看看說明:

然后去用戶手冊(cè)查看GPIO相關(guān)說明,找到以下內(nèi)容:

基本上了解狀況了,再看一下相關(guān)寄存器說明:

具體說明:

看了以上說明,基本明白怎么操作了。在初始化IO的時(shí)候,應(yīng)該把SYSCFG registers的UCPD2_STROBE位設(shè)置一下就ok了。
HAL庫(kù)操作:HAL_SYSCFG_StrobeDBattpinsConfig(SYSCFG_CFGR1_UCPD2_STROBE);
LL庫(kù)操作:MODIFY_REG(SYSCFG->CFGR1, (SYSCFG_CFGR1_UCPD1_STROBE | SYSCFG_CFGR1_UCPD2_STROBE), SYSCFG_CFGR1_UCPD2_STROBE);
再提醒下,其實(shí)PA8和PA15也是這樣的。如果我們不需要這個(gè)下拉電阻,需要按照上面的操作調(diào)整一下。
那么為什么STM32G071有這樣的設(shè)置呢?看下面IO功能即可知道,這幾個(gè)引腳其實(shí)是下面幾個(gè)管腳的復(fù)用腳。

-
STM32
+關(guān)注
關(guān)注
2308文章
11160瀏覽量
373181
原文標(biāo)題:技術(shù)分享 | STM32G071 PD0 PD2引腳使用注意事項(xiàng)
文章出處:【微信號(hào):STM32_STM8_MCU,微信公眾號(hào):STM32單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
STM32F103TBU6封裝是VFQFPN36,將PD0和PD1配置成CAN不成功是什么原因?
STM32F103TBU6 封裝是VFQFPN36 將PD0和PD1配置成CAN不成功是什么原因?
請(qǐng)問如何設(shè)置stm32f051的PD0、PD1為GPio口
請(qǐng)問PD2引腳沒用到戰(zhàn)艦開發(fā)板以太網(wǎng)歷程中去嗎?
嵌入式系統(tǒng)的核心器件:STM32G071開發(fā)事項(xiàng)
將CAN引腳重映射到了PD0和PD1引腳上
STM32G070的4個(gè)引腳相關(guān)資料推薦
求一種引腳PD2鎖存問題的解決方案
CH32F203的PD0,PD1作為GPIO不受控是什么原因?
使用帶有stm32g071rb76處理器的usb-pd系統(tǒng),為什么只有一個(gè)CC引腳?
STM32F103C8引腳PD0和PD1不能作為輸出要怎么解決?
如何連接STM32G071進(jìn)行USB Type-C PD充電?
STM32G071KBT6“GP版”與“PD版”的區(qū)別是什么?
PD0內(nèi)部上拉與PD1內(nèi)部上拉一起工作,讀取的數(shù)值與實(shí)際不符是為什么?
STM32G071 PD0 PD2引腳使用注意事項(xiàng)
一文知道STM32G071 PD0 PD2引腳使用注意事項(xiàng)
評(píng)論