国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

stm32標(biāo)準(zhǔn)庫(kù)和HAL庫(kù)的對(duì)比學(xué)習(xí)3.《學(xué)習(xí)外部中斷EXIT和應(yīng)用》

這篇具有很好參考價(jià)值的文章主要介紹了stm32標(biāo)準(zhǔn)庫(kù)和HAL庫(kù)的對(duì)比學(xué)習(xí)3.《學(xué)習(xí)外部中斷EXIT和應(yīng)用》。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

? ? ? ? 本人是大一的學(xué)生,學(xué)習(xí)了一段時(shí)間的stm32,此系列博客為個(gè)人的學(xué)習(xí)筆記,方便個(gè)人復(fù)習(xí),如有錯(cuò)誤或問題,非常非常歡迎大家來(lái)大力指正。

簡(jiǎn)單用文字說一下原理。

如果先要清楚了解建議去b站看一下keysking大佬的教程,很有趣易懂(本視頻的部分圖也來(lái)自keysking視頻中的圖片,大家如果要學(xué)習(xí)強(qiáng)烈推薦他的視頻

當(dāng)EXTI觸發(fā)時(shí),正在運(yùn)行的代碼會(huì)暫停運(yùn)行,跳轉(zhuǎn)到中斷函數(shù)的代碼執(zhí)行,結(jié)束后返回之前停止的代碼,直到下一次中斷觸發(fā)。

外部的電平信號(hào)進(jìn)入輸入驅(qū)動(dòng)器,經(jīng)過上下拉電阻,經(jīng)過施密特觸發(fā)器,通過比較轉(zhuǎn)換將模擬電路轉(zhuǎn)化為數(shù)字電路(也可以不走觸發(fā)器之間傳到模擬輸入口)后到達(dá)片上外設(shè)或者輸入寄存器。到達(dá)外部事件/中斷控制器

stm32標(biāo)準(zhǔn)庫(kù)和HAL庫(kù)的對(duì)比學(xué)習(xí)3.《學(xué)習(xí)外部中斷EXIT和應(yīng)用》,stm32,學(xué)習(xí),嵌入式硬件

進(jìn)入外部事件/中斷控制器

輸入線中其實(shí)有引腳對(duì)應(yīng)的EXTI外部中斷線,編號(hào)為相同數(shù)字的用一條線

stm32標(biāo)準(zhǔn)庫(kù)和HAL庫(kù)的對(duì)比學(xué)習(xí)3.《學(xué)習(xí)外部中斷EXIT和應(yīng)用》,stm32,學(xué)習(xí),嵌入式硬件

邊緣檢測(cè)電路是幫我們配置下降沿/上升沿觸發(fā)中斷信號(hào)的 ,如果觸發(fā)產(chǎn)生一個(gè)高電平。

軟件中斷事件寄存器是可以用代碼模擬創(chuàng)造一個(gè)中斷。

或門有一個(gè)相應(yīng)中斷就輸出中斷。

后面有個(gè)與門,要兩個(gè)都產(chǎn)生相同電平才可以,所以中斷屏蔽發(fā)生器可以控制中斷的傳遞。

之后到達(dá)NVIC(嵌套向量中斷控制器)

EXTI觸發(fā),就會(huì)執(zhí)行對(duì)應(yīng)的處理函數(shù)。函數(shù)處理完要將掛起寄存器清除為0,清除中斷標(biāo)志位

stm32標(biāo)準(zhǔn)庫(kù)和HAL庫(kù)的對(duì)比學(xué)習(xí)3.《學(xué)習(xí)外部中斷EXIT和應(yīng)用》,stm32,學(xué)習(xí),嵌入式硬件

中斷的優(yōu)先級(jí)

①搶占優(yōu)先級(jí)(先判斷,相同就判斷相應(yīng)優(yōu)先級(jí))

②相應(yīng)優(yōu)先級(jí)

一個(gè)中斷正在執(zhí)行,被另一個(gè)打斷,只比較搶占優(yōu)先級(jí)。

2.標(biāo)準(zhǔn)庫(kù)的代碼初始化

標(biāo)準(zhǔn)庫(kù)要AFIO選擇中斷引腳

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
    
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU;
    GPIO_InitStructure.GPIO_Pin=GPIO_Pin_14;
    GPIO_InitStructure.GPIO_Speed=GPIO_Speed_50MHz;
    GPIO_Init(GPIOB,&GPIO_InitStructure);

    GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource14);

    EXTI_InitTypeDef EXTI_InitStructure;
    EXTI_InitStructure.EXTI_Line=EXTI_Line14;
    EXTI_InitStructure.EXTI_LineCmd=ENABLE;
    EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
    EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;
    EXTI_Init(&EXTI_InitStructure);

    NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

    NVIC_InitTypeDef NVIC_InitStructure;
    NVIC_InitStructure.NVIC_IRQChannel=EXTI15_10_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;
    NVIC_Init(&NVIC_InitStructure);

這個(gè)是標(biāo)準(zhǔn)庫(kù)外部中斷的定義

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);

開啟AFIO的時(shí)鐘(GPIO為通用引腳,AFIO為復(fù)用引腳,都要開啟外部時(shí)鐘)

將要輸入的引腳的模式設(shè)定為外部輸入,其他像gpio那樣配置

 GPIO_EXTILineConfig(GPIO_PortSourceGPIOB,GPIO_PinSource14);

上面那條是開啟GPIOB pin14的外部中斷復(fù)用功能

    EXTI_InitTypeDef EXTI_InitStructure;
    EXTI_InitStructure.EXTI_Line=EXTI_Line14;
    EXTI_InitStructure.EXTI_LineCmd=ENABLE;
    EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;
    EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;
    EXTI_Init(&EXTI_InitStructure);

這部分為EXTI外部中斷的配置

???EXTI_InitStructure.EXTI_Line=EXTI_Line14;為配置外部中斷線
? ? EXTI_InitStructure.EXTI_LineCmd=ENABLE;打開使能開關(guān)
? ? EXTI_InitStructure.EXTI_Mode=EXTI_Mode_Interrupt;選擇中斷模式(有中斷模式和事件模式)
? ? EXTI_InitStructure.EXTI_Trigger=EXTI_Trigger_Falling;觸發(fā)方式(這里是下降沿觸發(fā))
? ? EXTI_Init(&EXTI_InitStructure);

   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);

    NVIC_InitTypeDef NVIC_InitStructure;
    NVIC_InitStructure.NVIC_IRQChannel=EXTI15_10_IRQn;
    NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;
    NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;
    NVIC_Init(&NVIC_InitStructure);

這里是NVIC優(yōu)先級(jí)的定義

? ?NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//設(shè)置優(yōu)先級(jí)分組
? ? NVIC_InitStructure.NVIC_IRQChannel=EXTI15_10_IRQn;//設(shè)置通道(IRQhandler)
? ? NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;//通道使能
? ? NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=1;//設(shè)置搶占優(yōu)先級(jí)
? ? NVIC_InitStructure.NVIC_IRQChannelSubPriority=1;//設(shè)置響應(yīng)優(yōu)先級(jí)
? ? NVIC_Init(&NVIC_InitStructure);

至此外部中斷是所有都配置好了

而中斷處理函數(shù),產(chǎn)生中斷就會(huì)執(zhí)行下面的函數(shù)

void TIM2_IRQHandler(void)
{
    EXTI_ClearITPendingBit(EXTI_Line14);

	}

其中?? ?EXTI_ClearITPendingBit(EXTI_Line14);//清除外部中斷14號(hào)線的中斷標(biāo)志位

3.HAL庫(kù)初始化

stm32標(biāo)準(zhǔn)庫(kù)和HAL庫(kù)的對(duì)比學(xué)習(xí)3.《學(xué)習(xí)外部中斷EXIT和應(yīng)用》,stm32,學(xué)習(xí),嵌入式硬件stm32標(biāo)準(zhǔn)庫(kù)和HAL庫(kù)的對(duì)比學(xué)習(xí)3.《學(xué)習(xí)外部中斷EXIT和應(yīng)用》,stm32,學(xué)習(xí),嵌入式硬件GPIO mode為設(shè)置觸發(fā)方式

GPIO pull up/pull down是設(shè)置端口的上下拉

然后在NVIC開啟外部中斷stm32標(biāo)準(zhǔn)庫(kù)和HAL庫(kù)的對(duì)比學(xué)習(xí)3.《學(xué)習(xí)外部中斷EXIT和應(yīng)用》,stm32,學(xué)習(xí),嵌入式硬件

配置NVIC的優(yōu)先級(jí)

stm32標(biāo)準(zhǔn)庫(kù)和HAL庫(kù)的對(duì)比學(xué)習(xí)3.《學(xué)習(xí)外部中斷EXIT和應(yīng)用》,stm32,學(xué)習(xí),嵌入式硬件

較為方便,直接選數(shù)字就好,數(shù)值越小優(yōu)先級(jí)越高

生成代碼后再stm32f1xx_it.c文件中找到

void EXTI15_10_IRQHandler(void)
{
      HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_12);
}

這個(gè)就是中斷處理函數(shù)

其中HAL_GPIO_EXTI_IRQHandler(GPIO_PIN_12);//這個(gè)函數(shù)可以幫我們將掛起寄存器清除為0

在中斷函數(shù)中寫下中斷時(shí)需要執(zhí)行的代碼。

補(bǔ)充:如果要使用delay函數(shù),要考慮優(yōu)先級(jí)問題,要將系統(tǒng)滴答(time base:system tick timer)的優(yōu)先級(jí)調(diào)至高于中斷的優(yōu)先級(jí)delay才能實(shí)現(xiàn)延時(shí),如果低于中斷,著輪不到delay產(chǎn)生效果文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-806319.html

到了這里,關(guān)于stm32標(biāo)準(zhǔn)庫(kù)和HAL庫(kù)的對(duì)比學(xué)習(xí)3.《學(xué)習(xí)外部中斷EXIT和應(yīng)用》的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【STM32】基于HAL庫(kù)的中斷詳細(xì)學(xué)習(xí)

    【STM32】基于HAL庫(kù)的中斷詳細(xì)學(xué)習(xí)

    1.中斷概述 1.1中斷相關(guān)概念 1.2 STM32中斷系統(tǒng) 2 .HAL庫(kù)的中斷處理 2.1 HAL 庫(kù)的中斷封裝 2.2 外部中斷處理流程 3.外部中斷的HAL庫(kù)定義 3.1. 外部中斷的數(shù)據(jù)類型 3.2. 外部中斷的接口函數(shù) 在計(jì)算機(jī)系統(tǒng)中,處理器常常需要與外部設(shè)備進(jìn)行數(shù)據(jù)傳輸。常見的數(shù)據(jù)傳輸方式有以下四種:

    2024年02月02日
    瀏覽(34)
  • stm32——hal庫(kù)學(xué)習(xí)筆記(外部中斷)

    stm32——hal庫(kù)學(xué)習(xí)筆記(外部中斷)

    一、什么是中斷?(了解) 打斷CPU執(zhí)行正常的程序,轉(zhuǎn)而處理緊急程序,然后返回原暫停的程序繼續(xù)運(yùn)行,就叫中斷 中斷的作用和意義 中斷的意義:高效處理緊急程序,不會(huì)一直占用CPU資源 STM32 GPIO外部中斷簡(jiǎn)圖 二、NVIC(熟悉) 2.1,NVIC基本概念 2.2,NVIC相關(guān)寄存器介紹

    2024年02月22日
    瀏覽(23)
  • Stm32點(diǎn)亮LED燈(HAL庫(kù)和標(biāo)準(zhǔn)庫(kù))

    Stm32點(diǎn)亮LED燈(HAL庫(kù)和標(biāo)準(zhǔn)庫(kù))

    ????????日常生活中我們要點(diǎn)亮房間的燈,就是按開關(guān)。背后的本質(zhì),用初中物理的話說就是兩個(gè)要素:形成閉合回路;給用電器電壓。 ????????單片機(jī)就是一個(gè)小型的集成電路,LED作為電路中的用電器也需要這兩個(gè)要素。需要注意的是,發(fā)光二極管具有單向?qū)ㄐ裕?/p>

    2024年02月20日
    瀏覽(20)
  • STM32 HAL庫(kù) STM32CubeMx -- 外部中斷

    STM32 HAL庫(kù) STM32CubeMx -- 外部中斷

    中斷,是指處理機(jī)處理程序運(yùn)行中出現(xiàn)的緊急事件的整個(gè)過程。程序運(yùn)行過程中,系統(tǒng)外部、系統(tǒng)內(nèi)部或者現(xiàn)行程序本身若出現(xiàn)緊急事件,處理機(jī)立即中止現(xiàn)行程序的運(yùn)行,自動(dòng)轉(zhuǎn)入相應(yīng)的處理程序(中斷服務(wù)程序),待處理完后,再返回原來(lái)的程序運(yùn)行,這整個(gè)過程稱為程序

    2024年02月08日
    瀏覽(21)
  • STM32基于HAL庫(kù)的串口接受中斷和空閑中斷

    在通信方面。UART由于全雙工通信,可以同時(shí)接受數(shù)據(jù)和發(fā)送數(shù)據(jù)而被廣泛使用。 而接受數(shù)據(jù)則又有很多種方法 比如: 1根據(jù)結(jié)束符判斷,數(shù)據(jù)是字符串形式,所以一般串口接受的接受符就是 \\\"rn\\\"? 換成16進(jìn)制ascil碼顯示就是 0X0D? ?0X0A (對(duì)應(yīng)rn) ?2定時(shí)器中斷,設(shè)計(jì)\\\"喂狗信號(hào)量

    2023年04月08日
    瀏覽(22)
  • STM32 HAL庫(kù)的串口中斷服務(wù)函數(shù)詳解

    STM32 HAL庫(kù)的串口中斷服務(wù)函數(shù)詳解

    最近在實(shí)現(xiàn)利用上位機(jī)通過串口發(fā)送指令給下位機(jī)執(zhí)行操作的實(shí)驗(yàn),在之前學(xué)習(xí)串口的過程中我就一直有一個(gè)疑惑,那就是為什么在串口中斷回調(diào)函數(shù)內(nèi)除了要加上自己的操作以外還要在末尾再執(zhí)行一次 接收中斷 ,在查閱了一些資料后我才發(fā)現(xiàn)原來(lái)和 中斷服務(wù)函數(shù) 有關(guān) 我

    2024年02月10日
    瀏覽(21)
  • STM32 外部中斷 標(biāo)準(zhǔn)庫(kù)函數(shù)

    STM32 外部中斷 標(biāo)準(zhǔn)庫(kù)函數(shù)

    中斷對(duì)于單片機(jī)來(lái)說是必不可少的存在。例如使用一個(gè)按鍵打開一個(gè)燈的方法,就可以使用 中斷 的方式實(shí)現(xiàn),并且效果更好。 中斷的概念比較容易理解,就相當(dāng)于做飯的時(shí)候,你的主任務(wù)是炒菜,炒菜炒到一半,來(lái)了個(gè)電話你就需要優(yōu)先去接電話,然后電話處理完后才會(huì)繼

    2024年01月16日
    瀏覽(19)
  • HAL庫(kù)和標(biāo)準(zhǔn)庫(kù)的區(qū)別

    本文回答來(lái)源于chat gpt4,非原創(chuàng),也是我初學(xué)過程中所遇到的問題,答案分享給大家,如有侵權(quán)請(qǐng)聯(lián)系刪除: HAL 庫(kù)(Hardware Abstraction Layer,硬件抽象層)和標(biāo)準(zhǔn)庫(kù)(Standard Peripheral Library,標(biāo)準(zhǔn)外設(shè)庫(kù),又稱為 SPL)都是 STM32 微控制器的固件庫(kù)。它們的主要區(qū)別在于結(jié)構(gòu)和抽象

    2024年02月07日
    瀏覽(24)
  • freemodbus移植進(jìn)STM32(包含HAL庫(kù)和標(biāo)準(zhǔn)庫(kù)兩種方法)

    freemodbus移植進(jìn)STM32(包含HAL庫(kù)和標(biāo)準(zhǔn)庫(kù)兩種方法)

    基于freemodbus1.6 使用HAL庫(kù) 軟件:stm32cubemx stm32cubeide 后續(xù)會(huì)更新標(biāo)準(zhǔn)庫(kù)的移植。以及rtos下的移植(盡量) 這個(gè)獲取方法網(wǎng)上到處都是,不細(xì)說了。 新建工程只列出了與移植freemodbus相關(guān)的設(shè)置 這里我使用的是485通信,所以額外使能了一個(gè)引腳 使能一個(gè)定時(shí)器,這里我用的是

    2024年02月05日
    瀏覽(19)
  • STM32(三):外部中斷 (標(biāo)準(zhǔn)庫(kù)函數(shù))

    STM32(三):外部中斷 (標(biāo)準(zhǔn)庫(kù)函數(shù))

    前言 上一篇文章已經(jīng)介紹了如何用按鍵點(diǎn)燈,使用的是按鍵掃描的方式,實(shí)現(xiàn)了點(diǎn)燈的第二步。這一篇?jiǎng)t介紹如何用外部中斷的方式實(shí)現(xiàn)按鍵點(diǎn)燈的過程。 中斷想必大家都知道,通俗來(lái)說也就是你現(xiàn)在在做事情1,被打擾了先去做了事情2,事情2做完了回去繼續(xù)做事情1。 而

    2024年04月25日
    瀏覽(18)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包