衡阳派盒市场营销有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

用STM32CubeIDE軟件實現STM32外部中斷實例

8Y52_c_stm32 ? 來源:ARM與嵌入式 ? 作者:保生 ? 2022-08-24 09:09 ? 次閱讀

本文用STM32CubeIDE軟件實現STM32外部中斷實例。

新建工程

“File”-“New”-“STM32 Project”。

7b81411a-22d2-11ed-ba43-dac502259ad0.png

輸入芯片型號STM32F103ZE。

7b901488-22d2-11ed-ba43-dac502259ad0.png

選擇相應封裝,下一步。

7ba59dd0-22d2-11ed-ba43-dac502259ad0.png

填寫項目名,選擇工程位置,下一步。

7bbd5a4c-22d2-11ed-ba43-dac502259ad0.png

配置時鐘、調試模式

選擇高速外部時鐘。

7be491a2-22d2-11ed-ba43-dac502259ad0.png

HCLK總線時鐘處輸入72,回車,配置使用最高時鐘頻率。

7bf80282-22d2-11ed-ba43-dac502259ad0.png

調試模式選擇串行,方便下載程序。

7c18918c-22d2-11ed-ba43-dac502259ad0.png

配置管腳外設

本實例中用到了LED1與KEY_LEFT,找到相應電路圖。

7c2a1600-22d2-11ed-ba43-dac502259ad0.png

7c4a2e54-22d2-11ed-ba43-dac502259ad0.png

7c5b86c2-22d2-11ed-ba43-dac502259ad0.png

可見LED1對應PC0管腳,低電平點亮。按鍵K1對應PE2管腳,低電平有效。

PC0配置為GPIO_Output,GPIO輸出模式

7c850d80-22d2-11ed-ba43-dac502259ad0.png

PE2配置為GPIO_EXTI2,GPIO中斷線2。

7c97c81c-22d2-11ed-ba43-dac502259ad0.png

對GPIO進行配置,可以看到PC0、PE2兩個管腳。

PC0管腳的配置:

GPIO輸出電平,“High”,復位后高電平,LED1熄滅狀態。

GPIO模式,“OutputPushPull”,推挽輸出,相關文章:梳理清楚推挽、開漏、OC、OD。

GPIO上拉下拉,“Pull-up”,上拉,默認高電平,避免管腳電平狀態不穩定

7ca8f7ae-22d2-11ed-ba43-dac502259ad0.png

PE2管腳的配置,GPIO模式這里有6個選項,分別是:

上升沿觸發的外部中斷

下降沿觸發的外部中斷

上升/下降沿觸發的外部中斷

上升沿觸發的事件中斷

下降沿觸發的事件中斷

上升/下降沿觸發的事件中斷

“外部中斷”與“事件中斷”的區別:

“事件中斷”可以由硬件自動完成這個事件產生的結果,比如引起DMA操作、AD轉換等,響應速度更快。

而本例中需要中斷服務函數才能完成中斷后產生的結果,是“外部中斷”

由電路圖可知,KEY1按鍵按下時為低電平,過程中會產生一個下降沿,所以選擇“下降沿外部中斷”這一項。

按鍵低電平有效,選擇上拉,給管腳一個穩定的電平狀態,不按下時為默認的高電平。

7cc38042-22d2-11ed-ba43-dac502259ad0.png

配置NVIC嵌套向量中斷控制器

NVIC就是用來控制中斷響應的,如下圖列出了各個中斷??梢苑謩e配置其使能狀態、搶占優先級與響應優先級。

7ce2dbe0-22d2-11ed-ba43-dac502259ad0.png

因為PE2配置為GPIO_EXTI2中斷,它出現在了列表中。同時出現的還有SysTick,它是HAL_Delay的時基來源,如下圖note處所說的,每隔一個固定時間產生一次中斷。

因為下文中斷服務函數代碼中用到了HAL_Delay延時函數,把SysTick與EXTI2的搶占優先級分別設置為0與2。在這里,數值越大優先級越小。

7cf4ea24-22d2-11ed-ba43-dac502259ad0.png

配置中斷服務函數

進行上述配置之后,點擊生成代碼。

7d186a76-22d2-11ed-ba43-dac502259ad0.png

本實例中的中斷類型是“外部中斷”,通過中斷服務函數來實現。

打開stm32f1xx_it.c文件,找到中斷服務函數,它調用了GPIO中斷服務函數。

7d2c3952-22d2-11ed-ba43-dac502259ad0.png

F3找到這個函數的定義,在清除中斷標志位后,進入了Callback回調函數。

7d40ee60-22d2-11ed-ba43-dac502259ad0.png

這個Callback函數也是一個弱化函數,,可以重寫,如下圖的__weak標識。

7d4f0a04-22d2-11ed-ba43-dac502259ad0.png

回到stm32f1xx_it.c文件,在末尾user code處寫上中斷發生時要實現的結果。

7d648000-22d2-11ed-ba43-dac502259ad0.png

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 控制器
    +關注

    關注

    112

    文章

    16445

    瀏覽量

    179444
  • STM32
    +關注

    關注

    2272

    文章

    10923

    瀏覽量

    357555
  • 中斷
    +關注

    關注

    5

    文章

    900

    瀏覽量

    41750
  • GPIO
    +關注

    關注

    16

    文章

    1216

    瀏覽量

    52377

原文標題:STM32外部中斷實例

文章出處:【微信號:c-stm32,微信公眾號:STM32嵌入式開發】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    STM32CubeIDE SWV功能介紹

    開發環境,將Printf定位到串口上是正常的,但是在重定位到SWO上卻出現了無法打印的問題??蛻粢矃⒖剂司W上的教程,仍然無法實現,不知道是什么原因。 STM32CubeIDE 版本:V1.6.1 硬件
    的頭像 發表于 10-13 14:20 ?3839次閱讀
    <b class='flag-5'>STM32CubeIDE</b> SWV功能介紹

    Ubuntu 18.04 安裝 STM32CubeIDE 小記

    Ubuntu 18.04 安裝 STM32CubeIDE 小記
    發表于 11-18 17:36 ?9次下載
    Ubuntu 18.04 安裝 <b class='flag-5'>STM32CubeIDE</b> 小記

    如何用STM32CubeIDE軟件實現STM32外部中斷

    本文STM32CubeIDE軟件實現STM32外部中斷
    的頭像 發表于 11-22 10:15 ?5514次閱讀
    如何用<b class='flag-5'>STM32CubeIDE</b><b class='flag-5'>軟件</b><b class='flag-5'>實現</b><b class='flag-5'>STM32</b><b class='flag-5'>外部</b><b class='flag-5'>中斷</b>

    STM32CubeIDE XiP 和 BootROM介紹, XiP外部內存QSPI FLASH執行用戶代碼

    STM32CubeIDE XiP 和 BootROM介紹, XiP外部內存QSPI FLASH執行用戶代碼
    發表于 12-02 09:21 ?14次下載
    <b class='flag-5'>STM32CubeIDE</b> XiP 和 BootROM介紹, XiP<b class='flag-5'>外部</b>內存QSPI FLASH執行用戶代碼

    STM32CubeIDE使用

    參考STM32CubeIDE屬于一站式工具,本文帶你體驗它的強大第一個STM32CubeIDE項目STM32CubeIDE使用記錄STM32CubeIDE使用筆記(03):使用ST-L
    發表于 12-02 17:21 ?29次下載
    <b class='flag-5'>STM32CubeIDE</b>使用

    STM32CubeIDE初識

    STM32CubeIDE初識
    發表于 12-02 18:36 ?23次下載
    <b class='flag-5'>STM32CubeIDE</b>初識

    STM32CubeIDE安裝-NSIS Error問題

    STM32CubeIDE安裝-NSIS Error問題
    發表于 12-03 21:06 ?18次下載
    <b class='flag-5'>STM32CubeIDE</b>安裝-NSIS Error問題

    STM32CubeIDE的MCU開發

    以前做stm32嵌入式開發均使用的是破解版的keil軟件,現在工作需要無法按照此步驟進行,最近針對ST官方免費軟件STM32CubeIDE進行了相關調研工作。1
    發表于 12-05 12:21 ?25次下載
    <b class='flag-5'>STM32CubeIDE</b>的MCU開發

    第一個STM32CubeIDE項目

    使用STM32CubeIDE的第一個項目開始第一個項目添加代碼今天開始做一個STM32CubeIDE的第一個項目,首先需要說明的:STM32CubeIDE是一個免費的軟件開始第一個項目
    發表于 12-29 19:29 ?11次下載
    第一個<b class='flag-5'>STM32CubeIDE</b>項目

    STM32CubeIDE生成的工程

    近日接到一客戶需求,其欲在 STM32CubeIDE 中指定堆(Heap)的地址到某一專用的RAM 中。
    的頭像 發表于 07-27 09:40 ?1828次閱讀

    STM32CUBEIDE(1)----安裝

    概述 STM32CubeIDE是一體式多操作系統開發工具,是STM32Cube軟件生態系統的一部分。 STM32CubeIDE是一種高級C/C++開發平臺,具有
    的頭像 發表于 11-22 09:52 ?1349次閱讀
    <b class='flag-5'>STM32CUBEIDE</b>(1)----安裝

    STM32CubeIDE安裝指南

    電子發燒友網站提供《STM32CubeIDE安裝指南.pdf》資料免費下載
    發表于 08-01 15:44 ?6次下載
    <b class='flag-5'>STM32CubeIDE</b>安裝指南

    巧用 STM32CubeIDE 之編譯警告

    巧用 STM32CubeIDE 之編譯警告
    的頭像 發表于 10-25 16:33 ?1077次閱讀
    巧用 <b class='flag-5'>STM32CubeIDE</b> 之編譯警告

    STM32CubeIDE快速入門指南

    電子發燒友網站提供《STM32CubeIDE快速入門指南.pdf》資料免費下載
    發表于 09-19 14:29 ?23次下載
    <b class='flag-5'>STM32CubeIDE</b>快速入門指南

    STM32CubeIDE找不到elf

    STM32CubeIDE是STMicroelectronics公司推出的一款集成開發環境(IDE),用于開發STM32系列微控制器的應用程序。它基于Eclipse開發平臺,并集成了ST的驅動程序
    的頭像 發表于 01-02 16:32 ?2022次閱讀
    太阳城百家乐官网币| 阴宅24山吉凶| 招远市| 大发888 充值| 百家乐真人游戏娱乐网| 百家乐什么叫缆| 百家乐官网网上真钱赌场娱乐网规则| 赌博技术| 圣安娜百家乐包杀合作| 九州百家乐官网的玩法技巧和规则 | 百家乐免费破解外挂| 百家乐官网筹码套装100片| 电脑打百家乐官网怎么赢| 菲律宾百家乐官网娱乐网| 郯城县| 健康| 溧水县| 韩城市| 铜鼓县| 百家乐官网投注方式| 塘沽区| 澳门百家乐官网如何算牌| 徐州市| 百家乐官网庄家的胜率| 圣安娜百家乐包杀合作| 百家乐怎样玩的| 真人百家乐蓝盾娱乐平台| 百家乐连跳趋势| 百家乐透明发牌机| 大发888提款怎么提| 大发888娱乐城 真钱bt| 大发888 护栏| 顶级赌场官方直营| 中国足球竞猜| 豪杰百家乐官网现金网| 线上百家乐官网赢钱| 百家乐官网赌博策略| 网络百家乐官网漏洞| 九州百家乐官网的玩法技巧和规则 | 百家乐官网赌博规| 24山的丑方位|