0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32CubeMX的外部中斷的使用

撞上電子 ? 2023-11-26 08:00 ? 次閱讀

啥是中斷?中斷是指計(jì)算機(jī)運(yùn)行過(guò)程中,出現(xiàn)某些意外情況需主機(jī)干預(yù)時(shí),機(jī)器能自動(dòng)停止正在運(yùn)行的程序并轉(zhuǎn)入處理新情況的程序,處理完畢后又返回原被暫停的程序繼續(xù)運(yùn)行。

舉個(gè)例子:

類(lèi)比一下

在實(shí)際的代碼中,HAL庫(kù)的中斷處理較為復(fù)雜:startup_stm32f103xb.s通過(guò)匯編注冊(cè)了中斷處理函數(shù)EXTI1_IRQHandler(),在stm32f1xx_it.c中,EXTI_IRQHandler()引用了HAL庫(kù)的處理函數(shù)HAL_GPIO_EXTI_IRQHandler(),其功能主要為判斷具體的中斷原因,并調(diào)用對(duì)應(yīng)的中斷回調(diào)函數(shù):HAL_GPIO_EXTI_Callback()。用戶可以自己重聲明中斷回調(diào)函數(shù)(HAL_GPIO_EXTI_Callback()),在其中寫(xiě)入自己的用戶邏輯,不出意外的話,你這時(shí)候可能會(huì)有點(diǎn)懵。上圖!

中斷處理函數(shù)寫(xiě)在EXTI_IRQHandler()或HAL_GPIO_EXTI_Callback()皆可,不過(guò)HAL_GPIO_EXTI_Callback()需要重新聲明,比如:

void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin){ if(HAL_GetTick()-t>30) { if(GPIO_Pin == GPIO_PIN_1) { duty_cycle=duty_cycle+100; __HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_4,duty_cycle); } if(GPIO_Pin == GPIO_PIN_2) { duty_cycle=duty_cycle-100; __HAL_TIM_SetCompare(&htim1,TIM_CHANNEL_4,duty_cycle); } } t=HAL_GetTick();}

對(duì)于代碼的意思不必理會(huì),只需知道這些是自己按需求寫(xiě)的,下面開(kāi)始連接硬件

以下是實(shí)操工程:

1,配置引腳

2,使能外部中斷

3,點(diǎn)擊右上角GENERATE CODE生成代碼



Hal_GPIO_TogglePin()這個(gè)函數(shù)可以反轉(zhuǎn)引腳電平,以控制小燈亮滅,多加的那幾行代碼用來(lái)做一個(gè)簡(jiǎn)單的消抖,然后編譯,下載。如果沒(méi)出問(wèn)題的話,每按一次按鍵,燈都會(huì)改變一次亮滅狀態(tài),上面用的是xxxit.c中的Handler函數(shù),下面試一試Callback函數(shù),注釋掉剛才加的代碼,在main.c中添加如下代碼:


編譯,下載,運(yùn)行,效果應(yīng)該跟剛才一樣,下面試一下TIM。


搞完后,小燈應(yīng)該每秒閃爍5次。注意:

中斷里不要使用延時(shí)函數(shù)Hal_Delay()

TIM中斷要手動(dòng)開(kāi)啟(Hal_TIM_Base_Start_IT())

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • STM32
    +關(guān)注

    關(guān)注

    2263

    文章

    10847

    瀏覽量

    353773
  • 程序
    +關(guān)注

    關(guān)注

    115

    文章

    3747

    瀏覽量

    80665
  • 機(jī)器
    +關(guān)注

    關(guān)注

    0

    文章

    773

    瀏覽量

    40661
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32CUBEMX(11)--外部中斷(EXTI)

    首先需要準(zhǔn)備一個(gè)開(kāi)發(fā)板,這里我準(zhǔn)備的是NUCLEO-F030R8的開(kāi)發(fā)板: 選擇芯片型號(hào) 使用STM32CUBEMX選擇芯片stm32f030r8,如下所示: 配置時(shí)鐘源 HSE與LSE分別為外部
    發(fā)表于 09-10 15:44

    如何利用STM32CubeMX生成的keil項(xiàng)目如何關(guān)閉全局中斷

    利用STM32CubeMX生成的keil項(xiàng)目如何關(guān)閉全局中斷?中斷相關(guān)的函數(shù)在哪個(gè)頭文件里? 如何關(guān)閉系統(tǒng)滴答定時(shí)器中斷
    發(fā)表于 05-16 07:52

    使用STM32cubemx外部中斷只能觸發(fā)一次的原因?

    配置截圖在下邊,還有外部輸入的三路PWM方波的截圖。 我們的需求是三個(gè)GPIO做外部中斷,接三路PWM方波輸入,方波周期為60ms,高電平20ms低電平40ms。 現(xiàn)在的問(wèn)題是,GPIO的管腳只有
    發(fā)表于 05-07 08:18

    stm32CubeMX怎么添加中斷以及相應(yīng)的代碼或者.c和.h文件?

    我想咨詢一下,用stm32CubeMX生成的工程里邊 怎么添加中斷以及相應(yīng)的代碼或者.c和.h文件。我跑的是freertos系統(tǒng),能不能在stm32CubeMX里邊直接添加啊。
    發(fā)表于 04-29 08:17

    STM32cubemx的庫(kù)和KEIL的庫(kù)有什么不同?

    STM32cubemx軟件有對(duì)應(yīng)各個(gè)系列芯片的庫(kù). 使用cubemx,生成代碼框架,比如生成MDK的代碼框架。但MDK也有自己的PACK。那么MDK的PACK和CUBEMX的庫(kù)有什么區(qū)別,兩者時(shí)什么關(guān)系呢?
    發(fā)表于 04-11 06:02

    STM32CUBEMX界面重影嚴(yán)重怎么解決?

    STM32CUBEMX 界面重影嚴(yán)重,有相同問(wèn)題的嗎
    發(fā)表于 03-14 07:13

    使用STM32CubeMX初始化STM32F103程序代碼默認(rèn)打開(kāi)了哪些中斷?是否可以暫時(shí)性關(guān)閉?

    使用STM32CubeMX初始化STM32F103程序代碼,在不使用任何外設(shè)中斷的情況下,系統(tǒng)會(huì)默認(rèn)打開(kāi)哪些中斷?這些中斷又可以怎樣暫時(shí)性關(guān)
    發(fā)表于 03-11 07:22

    基于STM32CUBEMX驅(qū)動(dòng)低壓步進(jìn)器電機(jī)驅(qū)動(dòng)器STSPIN220(2)----驅(qū)動(dòng)STSPIN220

    本文檔的目標(biāo)是提供關(guān)于使用STM32CubeMX驅(qū)動(dòng)低壓步進(jìn)電機(jī)驅(qū)動(dòng)器STSPIN220的詳盡信息和操作指南。通過(guò)本文檔,將深入了解如何利用STM32CubeMX來(lái)配置電機(jī)驅(qū)動(dòng)器,以及如何實(shí)現(xiàn)對(duì)步進(jìn)電機(jī)的精確控制和運(yùn)動(dòng)。
    的頭像 發(fā)表于 12-01 15:25 ?859次閱讀
    基于<b class='flag-5'>STM32CUBEMX</b>驅(qū)動(dòng)低壓步進(jìn)器電機(jī)驅(qū)動(dòng)器STSPIN220(2)----驅(qū)動(dòng)STSPIN220

    stm32cube怎么安裝 STM32CubeMX安裝步驟教程

    STM32CubeMXSTM32芯片圖形化配置工具,通過(guò)簡(jiǎn)單的操作便能實(shí)現(xiàn)相關(guān)配置,省去了我們配置各種外設(shè)的時(shí)間,支持MDK、IAR For ARM、TrueStudio等多種工具。
    發(fā)表于 11-14 12:37 ?1532次閱讀
    <b class='flag-5'>stm32</b>cube怎么安裝 <b class='flag-5'>STM32CubeMX</b>安裝步驟教程

    STM32外部中斷大問(wèn)題

    出現(xiàn)這種情況,明明沒(méi)有觸發(fā)外部中斷,可是中斷服務(wù)函數(shù)還是不斷的++。問(wèn)題一:電氣噪聲和抖動(dòng)電氣噪聲和抖動(dòng)是常見(jiàn)的問(wèn)題,可能會(huì)導(dǎo)致STM32外部
    的頭像 發(fā)表于 11-08 08:00 ?1744次閱讀
    <b class='flag-5'>STM32</b><b class='flag-5'>外部</b><b class='flag-5'>中斷</b>大問(wèn)題

    STM32基于標(biāo)準(zhǔn)外設(shè)庫(kù)的外部中斷配置

    本文介紹了STM32基于標(biāo)準(zhǔn)外設(shè)庫(kù)的外部中斷配置,以及基于參考手冊(cè)如何更加寄存器配置外部中斷
    的頭像 發(fā)表于 11-02 14:13 ?1579次閱讀
    <b class='flag-5'>STM32</b>基于標(biāo)準(zhǔn)外設(shè)庫(kù)的<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>配置

    STM8CubeMXSTM32CubeMX功能一樣嗎?

    STM8CubeMXSTM32CubeMX功能一樣嗎?
    的頭像 發(fā)表于 10-31 16:59 ?1635次閱讀
    STM8<b class='flag-5'>CubeMX</b>和<b class='flag-5'>STM32CubeMX</b>功能一樣嗎?

    STM32CubeMX介紹,功耗計(jì)算,中間件,CAD視圖

    1,概覽STM32CubeMXSTM32Cube工具家族中的一員,從MCU/MPU選型,引腳配置,系統(tǒng)時(shí)鐘以及外設(shè)時(shí)鐘設(shè)置,到外設(shè)參數(shù)配置,中間件參數(shù)配置,它給STM32開(kāi)發(fā)者們提供了一種簡(jiǎn)單
    的頭像 發(fā)表于 10-28 08:00 ?2179次閱讀
    <b class='flag-5'>STM32CubeMX</b>介紹,功耗計(jì)算,中間件,CAD視圖

    STM32如何配置外部中斷?STM32外部中斷配置步驟

    STM32如何配置外部中斷?STM32外部中斷配置步驟? 作為一款現(xiàn)代化的微控制器,
    的頭像 發(fā)表于 10-26 17:47 ?3223次閱讀

    STM32學(xué)習(xí)筆記一外部中斷

    STM32 的每個(gè) IO 都可以作為外部中斷中斷輸入口。STM32F103 的中斷控制器支持
    的頭像 發(fā)表于 10-24 14:12 ?1248次閱讀
    <b class='flag-5'>STM32</b>學(xué)習(xí)筆記一<b class='flag-5'>外部</b><b class='flag-5'>中斷</b>