EXIT外部中斷 HAL庫+cubeMX

一.cubeMX外部中斷配置

??

1.系統內核
2.中斷管理
3.選擇搶占優先級和響應優先級,共有5個等級,在這里就使用庫函數編寫代碼時最常用的2位搶占優先級2位響應優先級。
4.勾選使能選項,后面的兩個零,第一個代表搶占優先級的等級,第二個代表子優先級的等級。

二.配置外部中斷對應引腳?

1.系統內核
2.GPIO相關配置
3.GPIO的模式,由于引腳配置為中斷模式,故在當前的GPIO模式下,會顯示出6種外部觸發模式,分別為:外部中斷上升沿觸發,外部中斷下降沿觸發,外部中斷上升沿下降沿觸發,外部上升沿觸發時間,外部下降沿觸發事件,外部上升沿下降沿觸發事件。
4.由于選擇了上升沿觸發,為了使上升沿觸發更加穩定,故將引腳下拉。

三.生成代碼

//stm32f1xx_hal_msp.c里面有 void HAL_MspInit(void),配置中斷優先級分組void HAL_MspInit(void)
{/* USER CODE BEGIN MspInit 0 *//* USER CODE END MspInit 0 */__HAL_RCC_AFIO_CLK_ENABLE();__HAL_RCC_PWR_CLK_ENABLE();HAL_NVIC_SetPriorityGrouping(NVIC_PRIORITYGROUP_2);/* System interrupt init*//** NOJTAG: JTAG-DP Disabled and SW-DP Enabled*/__HAL_AFIO_REMAP_SWJ_NOJTAG();/* USER CODE BEGIN MspInit 1 *//* USER CODE END MspInit 1 */
}
//GPIO.c里面有配置好的引腳和中斷使能GPIO_InitStruct.Pin = KEY0_Pin|KEY1_Pin;GPIO_InitStruct.Mode = GPIO_MODE_IT_RISING;GPIO_InitStruct.Pull = GPIO_PULLUP;HAL_GPIO_Init(GPIOE, &GPIO_InitStruct);GPIO_InitStruct.Pin = KEY_UP_Pin;GPIO_InitStruct.Mode = GPIO_MODE_IT_FALLING;GPIO_InitStruct.Pull = GPIO_PULLDOWN;HAL_GPIO_Init(KEY_UP_GPIO_Port, &GPIO_InitStruct);/* EXTI interrupt init*/HAL_NVIC_SetPriority(EXTI0_IRQn, 0, 0);HAL_NVIC_EnableIRQ(EXTI0_IRQn);HAL_NVIC_SetPriority(EXTI3_IRQn, 1, 0);HAL_NVIC_EnableIRQ(EXTI3_IRQn);HAL_NVIC_SetPriority(EXTI4_IRQn, 2, 0);HAL_NVIC_EnableIRQ(EXTI4_IRQn);
//stm32f1xx_it.c里面有中斷服務函數的代碼(可以配置各部分的中斷服務函數)void EXTI0_IRQHandler(void)
{/* USER CODE BEGIN EXTI0_IRQn 0 *//* USER CODE END EXTI0_IRQn 0 */HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_0);/* USER CODE BEGIN EXTI0_IRQn 1 */__HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_0);/* USER CODE END EXTI0_IRQn 1 */
}/*** @brief This function handles EXTI line3 interrupt.*/
void EXTI3_IRQHandler(void)
{/* USER CODE BEGIN EXTI3_IRQn 0 *//* USER CODE END EXTI3_IRQn 0 */HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_3);/* USER CODE BEGIN EXTI3_IRQn 1 */__HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_3);/* USER CODE END EXTI3_IRQn 1 */
}/*** @brief This function handles EXTI line4 interrupt.*/
void EXTI4_IRQHandler(void)
{/* USER CODE BEGIN EXTI4_IRQn 0 *//* USER CODE END EXTI4_IRQn 0 */HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_4);/* USER CODE BEGIN EXTI4_IRQn 1 */__HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_4);/* USER CODE END EXTI4_IRQn 1 */
}

四.自己編寫

stm32f1xx_hal.c里面設置了中斷優先級分組

void exti_init(void)
{GPIO_InitTypeDef gpio_init_struct;__HAL_RCC_GPIOE_CLK_ENABLE();gpio_init_struct.Pin = GPIO_PIN_4;gpio_init_struct.Mode = GPIO_MODE_IT_FALLING;//設置成中斷觸發gpio_init_struct.Pull = GPIO_PULLUP;HAL_GPIO_Init(GPIOE, &gpio_init_struct);HAL_NVIC_SetPriority(EXTI4_IRQn, 2, 0);HAL_NVIC_EnableIRQ(EXTI4_IRQn);
}void EXTI4_IRQHandler(void)
{HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_4);__HAL_GPIO_EXTI_CLEAR_IT(GPIO_PIN_4);
}void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{delay_ms(20);if(GPIO_Pin == GPIO_PIN_4){if(HAL_GPIO_ReadPin(GPIOE, GPIO_PIN_4)==0){HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_5);}}
}

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/166237.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/166237.shtml
英文地址,請注明出處:http://en.pswp.cn/news/166237.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

用于計算機屏幕安全攝像頭系統:Screen Anytime Crack

Screen Anytime 是一款軟件,旨在自動將整個用戶會話或 PC/服務器/VM/Kiosk 的 /RDP/Citrix/RemoteApp 會話的屏幕活動記錄到視頻日志文件中,以用于記錄、審核和監控目的。通過重播其高度壓縮的視頻,您可以輕松回顧單臺計算機或一組服務器/PC …

基于C#實現并查集

一、場景 有時候我們會遇到這樣的場景,比如:M{1,4,6,8},N{2,4,5,7},我的需求就是判斷{1,2}是否屬于同一個集合,當然實現方法有很多,一般情況下,普通青年會做出 O(MN)的復雜度,那么有沒有更輕量級的復雜度呢…

Vatee萬騰科技的獨特力量:Vatee數字時代創新的新視野

在數字化時代的浪潮中,Vatee萬騰科技以其獨特而強大的創新力量,為整個行業描繪了一幅嶄新的視野。這不僅是一場科技創新的冒險,更是對未來數字時代發展方向的領先探索。 Vatee萬騰將創新視為數字時代發展的引擎,成為推動行業向前的…

ubuntu 安裝python3.13

列出 /usr/bin/ 目錄下所有以 python 開頭的文件和目錄 ls /usr/bin/python* 添加Python軟件源。您可以通過以下命令將Python的軟件源添加到您的系統中 sudo add-apt-repository ppa:deadsnakes/ppa 然后運行以下命令以更新軟件包列表: sudo apt-get update 安…

vue每個階段的生命周期做了什么

Vue 實例的生命周期可以分為創建階段、掛載階段、更新階段和銷毀階段。下面是每個階段具體干了什么的說明和對應的代碼示例: 創建階段 beforeCreate: 此階段在實例初始化之后,數據觀測 (data observer) 和 event/watcher 事件配置之前被調用…

Spring AOP 底層原理

Spring AOP 底層原理 aop 底層是采用動態代理機制實現的:接口實現類 (1)如果要代理的對象,實現了某個接口,那么 Spring AOP 會使用 JDK Proxy,去創建代理對象。 (2)沒有實現接口的對…

下一代ETL工具:微服務架構的全新數據集成平臺

當前對于大型企業來說數據的整合和加工變得越來越重要。隨著業務需求的不斷增長,企業數據量越來越大,數據管道越來越多,現有的ETL(抽取、轉換、加載)工具已不再滿足實時、高性能和微服務架構等現代化需求。因此&#x…

基于C#實現Prim算法

圖論在數據結構中是非常有趣而復雜的,作為 Web 碼農的我,在實際開發中一直沒有找到它的使用場景,不像樹那樣的頻繁使用,不過還是準備仔細的把圖論全部過一遍。 一、最小生成樹 圖中有一個好玩的東西叫做生成樹,就是用…

前端項目搭建Webpack的配置

本人這次是在搭建一個Typescript項目時候配置的Webpack。但是Typescript的項目本人看來和往常的Web(Vue)項目類似點很多的。那么我們就可以通過對該Typescript項目的略微調整即可挪到Web項目中....... 首先說明一下為什么要依賴WebPack來搭建項目??&…

ES 萬條以外分頁檢索功能實現及注意事項

背景 以 ES 存儲日志,且需要對日志進行分頁檢索,當數據量過大時,就面臨 ES 萬條以外的數據檢索問題,如何利用滾動檢索實現這個需求呢?本文介紹 ES 分頁檢索萬條以外的數據實現方法及注意事項。 需求分析 用 ES 存儲數…

Redis 反序列化失敗

文章目錄 問題原序列化配置修改配置解決方法 問題 com.fasterxml.jackson.databind.exc.MismatchedInputException: Cannot construct instance of org.springframework.security.core.authority.SimpleGrantedAuthority (although at least one Creator exists): cannot deser…

css圖片縮放屬性object-fit說明

object-fit 屬性可以設置以下值: 屬性值說明例子fill填充容器,可能會改變圖片的比例。object-fit: fill;contain保持圖片的原始比例,確保圖片完全包含在容器內。object-fit: contain;cover保持圖片的原始比例,確保圖片覆蓋整個容…

性能優化中使用Profiler進行頁面卡頓的排查及解決方式

文章目錄 一、前言二、頁面卡頓的排查方式1、耗時操作的監控2、頁面卡頓的監控 三、參考鏈接 一、前言 程序的優化在做過線上bug處理,布局層級優化,項目依賴庫版本更新,重復庫合并,刪除未使用的資源,刪除冗余的庫&…

機器學習【01】相關環境的安裝

學習實例 參考資料:聯邦學習實戰{楊強}https://book.douban.com/subject/35436587/ 項目地址:https://github.com/FederatedAI/Practicing-Federated-Learning/tree/main/chapter03_Python_image_classification 一、環境準備 GPU安裝CUDA、cuDNN pytho…

ComboGrid中快捷鍵Enter使用

為了實現當前元素,回車時有值跳轉到下一個元素,無值則查詢。 定義元素時使用快捷鍵 $.fn.combogrid.defaults.keyHandler.up.call(this);調用combogrid默認的快捷鍵 $(#cs).combogrid({width: 360,placeholder: 測試...,panelWidth: 1000,qParams: {pJ…

letcode::數組中的第k個最大元素

數組中的第k個最大元素 給定整數數組 nums 和整數 k,請返回數組中第 k 個最大的元素。 請注意,你需要找的是數組排序后的第 k 個最大的元素,而不是第 k 個不同的元素。 你必須設計并實現時間復雜度為 O(n) 的算法解決此問題。 示例 1: 輸入: …

PHP 語法||PHP 變量

PHP 腳本在服務器上執行&#xff0c;然后將純 HTML 結果發送回瀏覽器。 基本的 PHP 語法 PHP 腳本可以放在文檔中的任何位置。 PHP 腳本以 <?php 開始&#xff0c;以 ?> 結束&#xff1a; <?php // PHP 代碼 ?> 值得一提的是&#xff0c;通過設定php.ini的相…

nvm-切換node版本工具安裝-方便好用

去官網下載&#xff1a; https://github.com/coreybutler/nvm-windows#installation--upgrades 網站進去后點擊下載&#xff0c;點擊那個exe文件就下載本地&#xff0c;然后雙擊安裝 安裝nvm 就直接按照窗口提示的下一步就行&#xff0c;如果改了某些地方會不成功&#xf…

數字孿生技術:提升UI交互性與個性化設計

隨著數字化時代的到來&#xff0c;數字孿生技術正在逐漸改變我們的生活和工作方式。數字孿生是一種復制現實世界系統或實體的技術&#xff0c;通過創建數字模型來模擬現實世界中的各種行為和事件。這種技術不僅為人們提供了一個全新的視角來看待和解決問題&#xff0c;同時也為…