娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

stm32的每一個(gè)GPIO都可以產(chǎn)生中斷,這些中斷由EXTI這個(gè)外設(shè)管理。EXTI讀取GPIO引腳的電平變化,然后交給NVIC。


外部中斷EXTI的結(jié)構(gòu)框圖,標(biāo)號(hào)20表示類似的信號(hào)線路有20根

共有20根輸入線,其中EXTI0~EXTI15為GPIO引腳,每個(gè)GPIO的相同Pin(如Pin0)都接在一起,結(jié)構(gòu)如下

總結(jié)如下

這些輸入線由寄存器AFIO_EXTICR(外部中斷配置寄存器)來(lái)控制,其中AFIO_EXTICR0管理EXTI0~EXTI3,AFIO_EXTICR1管理EXTI4~EXTI7,依此類推。

外部中斷的檢測(cè)過(guò)程:


當(dāng)檢測(cè)到上升沿/下降沿時(shí),如果我們?cè)O(shè)置了軟件中斷事件寄存器EXTI_WSIER,則會(huì)將掛起寄存器EXTI_PR的相應(yīng)位置1。兩個(gè)均為1(邊沿檢測(cè)和軟件中斷事件寄存器),則或門(mén)電路的輸出為1。此時(shí)若設(shè)置中斷屏蔽寄存器為1(開(kāi)放中斷請(qǐng)求),則與門(mén)電路的輸出為1,中斷請(qǐng)求進(jìn)入到NVIC。

事件模式:


當(dāng)設(shè)置事件屏蔽寄存器開(kāi)放事件請(qǐng)求時(shí),下半部分電路與門(mén)的輸出為1,然后脈沖發(fā)生器就會(huì)產(chǎn)生一個(gè)脈沖。這個(gè)脈沖是在單片機(jī)的內(nèi)部,可以觸發(fā)ADC開(kāi)始轉(zhuǎn)換,還可以觸發(fā)定時(shí)器開(kāi)始計(jì)時(shí)。


標(biāo)準(zhǔn)庫(kù)中的EXTI初始化結(jié)構(gòu)體


typedef struct

{

// 選擇輸入線  

uint32_t EXTI_Line;               /*!< Specifies the EXTI lines to be enabled or disabled.

                                         This parameter can be any combination of @ref EXTI_Lines */

   

// EXTI模式,事件或中斷  

EXTIMode_TypeDef EXTI_Mode;       /*!< Specifies the mode for the EXTI lines.

                                         This parameter can be a value of @ref EXTIMode_TypeDef */

 

// EXTI觸發(fā)方式,上升沿或下降沿或上升下降沿都檢測(cè)  

EXTITrigger_TypeDef EXTI_Trigger; /*!< Specifies the trigger signal active edge for the EXTI lines.

                                         This parameter can be a value of @ref EXTIMode_TypeDef */

 

// EXTI輸入線使能  

FunctionalState EXTI_LineCmd;     /*!< Specifies the new state of the selected EXTI lines.

                                         This parameter can be set either to ENABLE or DISABLE */ 

}EXTI_InitTypeDef;

       下面是EXTI初始化函數(shù),其實(shí)就是往EXTI寄存器的對(duì)應(yīng)位寫(xiě)1,很簡(jiǎn)單


/**

  * @brief  Initializes the EXTI peripheral according to the specified

  *         parameters in the EXTI_InitStruct.

  * @param  EXTI_InitStruct: pointer to a EXTI_InitTypeDef structure

  *         that contains the configuration information for the EXTI peripheral.

  * @retval None

  */

void EXTI_Init(EXTI_InitTypeDef* EXTI_InitStruct)

{

  uint32_t tmp = 0;

 

  /* Check the parameters */

  assert_param(IS_EXTI_MODE(EXTI_InitStruct->EXTI_Mode));

  assert_param(IS_EXTI_TRIGGER(EXTI_InitStruct->EXTI_Trigger));

  assert_param(IS_EXTI_LINE(EXTI_InitStruct->EXTI_Line));  

  assert_param(IS_FUNCTIONAL_STATE(EXTI_InitStruct->EXTI_LineCmd));

 

  tmp = (uint32_t)EXTI_BASE;

     

  if (EXTI_InitStruct->EXTI_LineCmd != DISABLE)

  {

    /* Clear EXTI line configuration */

    // 清除EXTI輸入線的中斷和事件屏蔽寄存器

    EXTI->IMR &= ~EXTI_InitStruct->EXTI_Line;

    EXTI->EMR &= ~EXTI_InitStruct->EXTI_Line;

    

    tmp += EXTI_InitStruct->EXTI_Mode;

 

    *(__IO uint32_t *) tmp |= EXTI_InitStruct->EXTI_Line;

 

    /* Clear Rising Falling edge configuration */

    // 清除上升沿和下降沿配置

    EXTI->RTSR &= ~EXTI_InitStruct->EXTI_Line;

    EXTI->FTSR &= ~EXTI_InitStruct->EXTI_Line;

    

    /* Select the trigger for the selected external interrupts */

    // 如果是上升和下降沿都選擇

    if (EXTI_InitStruct->EXTI_Trigger == EXTI_Trigger_Rising_Falling)

    {

      /* Rising Falling edge */

      // 設(shè)置相應(yīng)的上升沿和下降沿觸發(fā)寄存器,兩個(gè)都設(shè)置

      EXTI->RTSR |= EXTI_InitStruct->EXTI_Line;

      EXTI->FTSR |= EXTI_InitStruct->EXTI_Line;

    }

    else

    {

      // tmp保存的是EXTI的基地址

      tmp = (uint32_t)EXTI_BASE;

      // tmp指向EXTI的邊沿觸發(fā)寄存器

      tmp += EXTI_InitStruct->EXTI_Trigger;

 

      // 對(duì)該地址取值(指針操作),往對(duì)應(yīng)的位寫(xiě)1

      *(__IO uint32_t *) tmp |= EXTI_InitStruct->EXTI_Line;

    }

  }

  else

  {

    tmp += EXTI_InitStruct->EXTI_Mode;

 

    /* Disable the selected external lines */

    *(__IO uint32_t *) tmp &= ~EXTI_InitStruct->EXTI_Line;

  }

}

       選擇輸入線對(duì)應(yīng)的GPIO,操作的是AFIO_EXTICR寄存器,源碼如下,其實(shí)也很簡(jiǎn)單,就是根據(jù)端口GPIO_PORT和GPIO_PIN設(shè)置AFIO->EXTICR寄存器,要養(yǎng)成多看源碼的習(xí)慣。


/**

  * @brief  Selects the GPIO pin used as EXTI Line.

  * @param  GPIO_PortSource: selects the GPIO port to be used as source for EXTI lines.

  *   This parameter can be GPIO_PortSourceGPIOx where x can be (A..G).

  * @param  GPIO_PinSource: specifies the EXTI line to be configured.

  *   This parameter can be GPIO_PinSourcex where x can be (0..15).

  * @retval None

  */

void GPIO_EXTILineConfig(uint8_t GPIO_PortSource, uint8_t GPIO_PinSource)

{

  uint32_t tmp = 0x00;

  /* Check the parameters */

  assert_param(IS_GPIO_EXTI_PORT_SOURCE(GPIO_PortSource));

  assert_param(IS_GPIO_PIN_SOURCE(GPIO_PinSource));

  

  tmp = ((uint32_t)0x0F) << (0x04 * (GPIO_PinSource & (uint8_t)0x03));

  AFIO->EXTICR[GPIO_PinSource >> 0x02] &= ~tmp;

  AFIO->EXTICR[GPIO_PinSource >> 0x02] |= (((uint32_t)GPIO_PortSource) << (0x04 * (GPIO_PinSource & (uint8_t)0x03)));

}

關(guān)鍵字:stm32  EXTI  外部中斷 引用地址:stm32專題七:EXTI(一)外部中斷/事件控制器框圖

上一篇:stm32專題六:中斷 NVIC
下一篇:stm32專題七:EXTI(二) 外部中斷

推薦閱讀

3.3Smith預(yù)估補(bǔ)償控制許多溫度控制系統(tǒng),尤其是電加熱溫度控制系統(tǒng),有很大的純滯后時(shí)間,對(duì)這類大純滯后系統(tǒng),一種經(jīng)典的方法是用Smith預(yù)估補(bǔ)償控制,但原型的Smith預(yù)估補(bǔ)償控制有兩個(gè)缺點(diǎn),1是對(duì)負(fù)荷變化無(wú)效,2是要求預(yù)估模型精確,顯然,負(fù)荷變化無(wú)法避免,預(yù)估模型無(wú)法精確求得,況且,被控對(duì)象可能是時(shí)變的或者有非線性,如此,兩者皆不可能滿足,而...
“經(jīng)常尋找‘迷路’的它,掃的不干凈還需人工掃、清理塵盒易揚(yáng)塵影響我們的健康”作為一款能幫我們減輕家庭負(fù)擔(dān)的智能掃地機(jī),似乎并沒(méi)有讓我們省心省力。致力打造家居清潔服務(wù)的一站式解決方案的聯(lián)想,推出了全球首款自動(dòng)集塵的掃拖一體機(jī)器人,自動(dòng)集塵、掃拖一體、導(dǎo)航等高能設(shè)計(jì),不僅彌補(bǔ)了用戶體驗(yàn)上的不足,更是完全碾壓石頭、科沃斯等產(chǎn)品。 究...
每年 iPhone 的電池容量一直是一個(gè)謎團(tuán)。和 Android 廠商不同,蘋(píng)果幾乎從不會(huì)在發(fā)布會(huì)上花費(fèi)時(shí)間說(shuō)明新 iPhone 電池的具體容量,在官方網(wǎng)站上往往只會(huì)通過(guò)最長(zhǎng)使用時(shí)間作為續(xù)航描述。因此,想知道具體電池容量需要通過(guò)其它渠道才能得知。近日,荷蘭通信運(yùn)營(yíng)商沃達(dá)豐在官網(wǎng)上架了 iPhone 12 系列預(yù)訂頁(yè)面。在各個(gè)產(chǎn)品的參數(shù)介紹頁(yè)內(nèi),清晰地寫(xiě)著...
10月18日,廣東駿亞發(fā)布三季報(bào)稱,2021年7-9月,公司實(shí)現(xiàn)營(yíng)業(yè)收入為7.19億元,同比增長(zhǎng)24.24%,歸屬于上市公司股東的凈利潤(rùn)為6257萬(wàn)元,同比增長(zhǎng)36.03%。2021年前三季度,廣東駿亞實(shí)現(xiàn)營(yíng)業(yè)收入為19.60億元,同比增長(zhǎng)33.25%,歸屬于上市公司股東的凈利潤(rùn)為1.78億元,同比增長(zhǎng)113.06%。廣東駿亞稱,業(yè)績(jī)?cè)鲩L(zhǎng)主要系公司大力拓展PCB業(yè)務(wù),產(chǎn)品結(jié)構(gòu)進(jìn)一步優(yōu)化,...

史海拾趣

問(wèn)答坊 | AI 解惑

PIC 簡(jiǎn)介

簡(jiǎn)單的介紹了PIC系列的單片機(jī)從最簡(jiǎn)單的到復(fù)雜的,一般都有介紹…

查看全部問(wèn)答∨

TM8706 使用手冊(cè).rar

關(guān)于TM8706芯片的詳細(xì)講解和 使用手冊(cè).…

查看全部問(wèn)答∨

基于CPLD/FPGA的出租車(chē)計(jì)費(fèi)器

摘要: 介紹了出租車(chē)計(jì)費(fèi)器系統(tǒng)的組成及工作原理,簡(jiǎn)述了在EDA平臺(tái)上用單片CPLD器件構(gòu)成該數(shù)字系統(tǒng)的設(shè)計(jì)思想和實(shí)現(xiàn)過(guò)程。論述了車(chē)型調(diào)整模塊、計(jì)程模塊、計(jì)費(fèi)模塊、譯碼動(dòng)態(tài)掃描模塊等的設(shè)計(jì)方法與技巧。 關(guān)鍵詞: CPLD/PPGA 硬件描述語(yǔ)言 出租車(chē) ...…

查看全部問(wèn)答∨

WINCE中怎么判斷字符串是否存在中文啊?

是寬字符的,網(wǎng)上看到_ismbblead(),但是這個(gè)函數(shù)在wince中不支持 如何能夠判斷呢? 還有如何得到這個(gè)中文字符的第一個(gè)拼音呢?謝謝…

查看全部問(wèn)答∨

求助GPRS模塊的簡(jiǎn)單問(wèn)題

我在做一個(gè)控制GPRS發(fā)送信息的小程序,最后輸入AT+CMGS輸入信息內(nèi)容以后要CTRL+Z才能發(fā)送,可是在我的程序中就是不 能吧信息內(nèi)容發(fā)送,應(yīng)該是CTRL+Z出錯(cuò)了 ,到底該怎么輸入才能發(fā)送出去啊 ;我的發(fā)送按鈕程序如下,請(qǐng)大家?guī)兔聪掳?.. void __f ...…

查看全部問(wèn)答∨

觸摸屏校正的奇怪問(wèn)題

1.首先拿到LCD,燒完讓他跑起來(lái)。 2.用wince自帶的校正程序校正。然后用PB或者EVC的工具連接wince的注冊(cè)表。找到下面對(duì)應(yīng)的值。 [HKEY_LOCAL_MACHINE\\HARDWARE\\DEVICEMAP\\TOUCH] "CalibrationData"="這里每人的值都不一樣" 在$(_FL ...…

查看全部問(wèn)答∨

我的mfc程序?yàn)槭裁匆簧蟻?lái)編譯就有很多錯(cuò)誤?

我在定制好CE6.0的平臺(tái)后,建立了一個(gè)MFC Smart Deviece Application 。選的Dialog其他的沒(méi)有設(shè)置。然后進(jìn)去了。我想看看是否有錯(cuò),創(chuàng)建完之后我就build solution一下,但是報(bào)出了57個(gè)錯(cuò)誤和11個(gè)警告。我都瘋了。會(huì)不會(huì)是因?yàn)槲业腟DK沒(méi)有定制好? ...…

查看全部問(wèn)答∨

申請(qǐng)學(xué)習(xí)使用開(kāi)發(fā)板

希望這個(gè)東西能給我撒,我會(huì)好好利用的。…

查看全部問(wèn)答∨

求助版主主

想尋找一ARM芯片 看了一些ST32F10XXX的,但沒(méi)找到 要求有10路以上的ADC 及10路左右輸入捕捉 及PWM…

查看全部問(wèn)答∨
小廣播
設(shè)計(jì)資源 培訓(xùn) 開(kāi)發(fā)板 精華推薦

最新單片機(jī)文章

 
EEWorld訂閱號(hào)

 
EEWorld服務(wù)號(hào)

 
汽車(chē)開(kāi)發(fā)圈

 
機(jī)器人開(kāi)發(fā)圈

電子工程世界版權(quán)所有 京ICP證060456號(hào) 京ICP備10001474號(hào)-1 電信業(yè)務(wù)審批[2006]字第258號(hào)函 京公網(wǎng)安備 11010802033920號(hào) Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 尼木县| 嘉兴市| 定兴县| 灵丘县| 双江| 阿城市| 顺平县| 宜昌市| 古田县| 香格里拉县| 大冶市| 梨树县| 荆州市| 碌曲县| 蒙阴县| 邻水| 错那县| 行唐县| 土默特左旗| 文昌市| 牟定县| 扬中市| 苍山县| 镇安县| 温泉县| 石景山区| 宝山区| 滨海县| 荣成市| 沂水县| 文成县| 贡山| 鞍山市| 马关县| 肇东市| 南木林县| 沈阳市| 临夏县| 蚌埠市| 广州市| 青神县|