日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

GPIO做输出还能作外部中断输入吗?

發(fā)布時(shí)間:2025/4/5 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 GPIO做输出还能作外部中断输入吗? 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

偶爾會(huì)有人問(wèn)起STM32芯片的GPIO做輸出時(shí)還是否可能作為外部中斷觸發(fā)輸入,這里一起聊聊該話題。

作為STM32芯片,其外部中斷觸發(fā)源可以是硬件模式或軟件模式。所謂軟件模式就是通過(guò)操作相關(guān)寄存器產(chǎn)生內(nèi)部中斷觸發(fā)信號(hào)并向內(nèi)核NVIC控制器申請(qǐng)中斷。硬件模式自然是指來(lái)自GPIO引腳的電平跳變信號(hào)經(jīng)邊沿檢測(cè)器形成中斷觸發(fā)信號(hào)向內(nèi)核申請(qǐng)中斷。【注:還有個(gè)別外設(shè)事件也可以作為外部中斷觸發(fā)源映射到外部中斷控制器。】

我們這里要談的是基于硬件模式的外部中斷話題。當(dāng)STM32的GPIO作為輸出時(shí),可能是通用GPIO輸出也可能是基于其它外設(shè)復(fù)用情況下的輸出,即復(fù)用輸出。

下圖是GPIO作為基本輸入輸出時(shí)的功能框圖。

下面是GPIO作為其它外設(shè)的復(fù)用輸出腳時(shí)的功能框圖。

不難看出,所謂GPIO復(fù)用輸出,就是將自身輸出數(shù)據(jù)寄存器與輸出控制電路及外部管腳斷開(kāi)來(lái),并將輸出控制電路及外部管腳借讓給其它外設(shè)使用。通俗點(diǎn)說(shuō),所謂GPIO復(fù)用輸出就是其它外設(shè)找GPIO借道而已。

從上面兩幅圖來(lái)看,不論GPIO通用輸出還是復(fù)用輸出,外部管腳的電平都可以連接到內(nèi)部輸入單元,管腳上的電平也應(yīng)該可以被內(nèi)部邊沿檢測(cè)器檢測(cè)到。也就是說(shuō),即使GPIO作為輸出,只要管腳上的電平跳變能被邊沿檢測(cè)器識(shí)別,按理可以作為外部中斷觸發(fā)源。

下面不妨用個(gè)簡(jiǎn)單的實(shí)例驗(yàn)證下。

這里使用一塊STM32F4系列的開(kāi)放板,通過(guò)定時(shí)器1的通道1輸出8個(gè)PWM信號(hào),同時(shí)將該定時(shí)器輸出通道所用管腳PA8配置為上升沿觸發(fā)的外部中斷輸入。PC13接一個(gè)按鍵,每按鍵一次啟動(dòng)定時(shí)器輸出8個(gè)脈沖。

我使用STM32CubeMx圖形化工具進(jìn)行配置。因?yàn)橐裀WM輸出腳同時(shí)配置為外部中斷輸入這里不好操作。我先借用旁邊的PA9進(jìn)行配置,等生成初始化代碼后我再將PA9改成PA8以及對(duì)應(yīng)的中斷矢量。TIM1配置在單脈沖模式,我在PC3按鍵中斷里啟動(dòng)TIM1的計(jì)數(shù)器。

TIM1的基本配置如下:

再就是兩個(gè)GPIO端口PC13/PA9的EXTI配置,分別對(duì)應(yīng)按鍵腳和PWM輸出腳。

將時(shí)鐘、調(diào)試口等配置完畢后生成初始化代碼,然后在代碼里將之前基于PA9生成的代碼改為基于TIM1-CH1的輸出腳PA8的。

主程序功能代碼很簡(jiǎn)單,就是配置TIM1-CH1的pwm輸出。


在用戶按鍵中斷程序里啟動(dòng)TIM1的計(jì)數(shù)器。

在基于PWM輸出腳PA8對(duì)應(yīng)的外部中斷程序里對(duì)中斷次數(shù)進(jìn)行統(tǒng)計(jì)。因它被配置為上沿觸發(fā),每次連續(xù)輸出8個(gè)脈沖的話,統(tǒng)計(jì)值應(yīng)該為8。

下面看看代碼運(yùn)行結(jié)果:

每按鍵一次輸出8個(gè)脈沖,沒(méi)有問(wèn)題。

再看看基于這個(gè)8個(gè)輸出脈沖統(tǒng)計(jì)到中斷次數(shù),也確實(shí)為8次。【如下圖所示]

顯然,當(dāng)GPIO做為輸出時(shí)還是可以感受到外部管腳電平的變化情況,并可以做為外部中斷觸發(fā)源申請(qǐng)中斷。結(jié)合上面GPIO輸出模式下的功能框圖來(lái)看,當(dāng)它被配置為輸出時(shí)是具備雙向特性的。當(dāng)然,一般來(lái)講,如果希望GPIO做為雙向驅(qū)動(dòng)口使用時(shí),建議將其配置為OD開(kāi)漏結(jié)合上拉模式。比方在做I2C應(yīng)用時(shí),將通信GPIO端口配置為開(kāi)漏模式結(jié)合上拉電阻即可進(jìn)行雙向數(shù)據(jù)通信,無(wú)須對(duì)通信口的GPIO模式來(lái)回切換。

你點(diǎn)的每個(gè)贊,我都當(dāng)成喜歡

總結(jié)

以上是生活随笔為你收集整理的GPIO做输出还能作外部中断输入吗?的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。