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

STM32F1 - 中斷系統(tǒng)

這篇具有很好參考價(jià)值的文章主要介紹了STM32F1 - 中斷系統(tǒng)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。


1> 硬件框圖

STM32F1 - 中斷系統(tǒng),STM32F1-外設(shè)驅(qū)動(dòng),stm32,嵌入式硬件,單片機(jī)

NVIC:Nested Vectored Interrupt Controller【嵌套向量中斷控制器】

管理內(nèi)核外設(shè)和片上外設(shè)的所有中斷功能;

EXTI:External Interrupt 【外部中斷控制器】

管理GPIO的中斷;


2> NVIC 中斷管理

STM32F1 - 中斷系統(tǒng),STM32F1-外設(shè)驅(qū)動(dòng),stm32,嵌入式硬件,單片機(jī)


3> EXTI 中斷管理

3.1> EXTI與NVIC

STM32F1 - 中斷系統(tǒng),STM32F1-外設(shè)驅(qū)動(dòng),stm32,嵌入式硬件,單片機(jī)
STM32F103ZET6總共19個(gè)外部中斷

PA0~PG0,7個(gè)引腳中只有一個(gè)可以映射到EXTI0;

外部中斷EXTI 9 ~ 5 合并為EXTI9_5中斷;
外部中斷EXT 15~10 合并為EXT15_10中斷;


3.2> EXTI內(nèi)部框圖

STM32F1 - 中斷系統(tǒng),STM32F1-外設(shè)驅(qū)動(dòng),stm32,嵌入式硬件,單片機(jī)


4> 外部中斷實(shí)驗(yàn)


4.1> 實(shí)驗(yàn)概述

用2個(gè)按鍵控制2個(gè)LED狀態(tài)翻轉(zhuǎn),用外部中斷方式


4.2> 程序設(shè)計(jì)

main.c: 主程序

int main(void)
{ 
	
	
	LED_Init();
	KEY_Init();
	
	LED_Off();
	while(1) /* stop */;
	
	//return 0;		
}

bsp_led.c: LED燈初始化及開(kāi)關(guān)函數(shù)

void LED_Init(void)
{
	GPIO_InitTypeDef gpio_Struct_tmp = {0};
	
	// 使能時(shí)鐘
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB,ENABLE);
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE,ENABLE);
	
	
	// PB5
	gpio_Struct_tmp.GPIO_Pin = GPIO_Pin_5;
	gpio_Struct_tmp.GPIO_Speed = GPIO_Speed_50MHz;
	gpio_Struct_tmp.GPIO_Mode = GPIO_Mode_Out_PP; // 推挽輸出
	
	GPIO_Init(GPIOB, &gpio_Struct_tmp); 	
	
	
	// PE5
	gpio_Struct_tmp.GPIO_Pin = GPIO_Pin_5;
	gpio_Struct_tmp.GPIO_Speed = GPIO_Speed_50MHz;
	gpio_Struct_tmp.GPIO_Mode = GPIO_Mode_Out_PP; // 推挽輸出
	
	GPIO_Init(GPIOE, &gpio_Struct_tmp);
}


void LED_On(void)
{
	GPIO_ResetBits(GPIOB, GPIO_Pin_5);
	GPIO_ResetBits(GPIOE, GPIO_Pin_5);
}



void LED_Off(void)
{
	GPIO_SetBits(GPIOB, GPIO_Pin_5);
	GPIO_SetBits(GPIOE, GPIO_Pin_5);
}

bsp_key.c: 按鍵初始化

void KEY_Init(void)
{
	GPIO_InitTypeDef GPIO_tmp;
	EXTI_InitTypeDef EXTI_tmp;
	NVIC_InitTypeDef NVIC_tmp;
	
	/*-------------Step 1> 配置GPIO ---------------*/
	
	// 2話不說(shuō)開(kāi)啟時(shí)鐘
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOE, ENABLE);
	
	GPIO_tmp.GPIO_Mode = GPIO_Mode_IPU;
	GPIO_tmp.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_3;	// PE4, PE3
	GPIO_tmp.GPIO_Speed = GPIO_Speed_50MHz; 
	
	// PE4, PE3 上拉輸入
	GPIO_Init(GPIOE, &GPIO_tmp);
	
	
	/*------------- Step 2> 配置AFIO  ------------*/
	RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
	
	GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource4); // EXTI_Line4
	GPIO_EXTILineConfig(GPIO_PortSourceGPIOE, GPIO_PinSource3); // EXTI_Line3

	/*------------- Step 3> 配置EXTI  ------------*/
	EXTI_tmp.EXTI_Line = EXTI_Line4;
	EXTI_tmp.EXTI_Mode = EXTI_Mode_Interrupt;
	EXTI_tmp.EXTI_Trigger = EXTI_Trigger_Falling;
	EXTI_tmp.EXTI_LineCmd = ENABLE;
	
	EXTI_Init(&EXTI_tmp);	// EXTI_Line4
	
	EXTI_tmp.EXTI_Line = EXTI_Line3;
	EXTI_tmp.EXTI_Mode = EXTI_Mode_Interrupt;
	EXTI_tmp.EXTI_Trigger = EXTI_Trigger_Falling;
	EXTI_tmp.EXTI_LineCmd = ENABLE;
	
	EXTI_Init(&EXTI_tmp);	// EXTI_Line3
	
	
	/*------------- Step 4> 配置NVIC  ------------*/
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);		// 中斷優(yōu)先級(jí)分組
	
	NVIC_tmp.NVIC_IRQChannel = EXTI4_IRQn;
	NVIC_tmp.NVIC_IRQChannelPreemptionPriority = 0;
	NVIC_tmp.NVIC_IRQChannelSubPriority = 0;
	NVIC_tmp.NVIC_IRQChannelCmd = ENABLE;
	
	NVIC_Init(&NVIC_tmp);	
	
	NVIC_tmp.NVIC_IRQChannel = EXTI3_IRQn;
	NVIC_tmp.NVIC_IRQChannelPreemptionPriority = 0;
	NVIC_tmp.NVIC_IRQChannelSubPriority = 0;
	NVIC_tmp.NVIC_IRQChannelCmd = ENABLE;
	
	NVIC_Init(&NVIC_tmp);
}

4步配置GPIO的外部中斷:

Step 1> 配置GPIO
Step 2> 配置AFIO
Step 3> 配置EXTI
Step 4> 配置NVIC


stm32f10x_it.c: 中斷處理函數(shù)

// EXTI3 處理函數(shù), key1;
void EXTI3_IRQHandler(void)
{
	EXTI_ClearITPendingBit(EXTI_Line3);
	
	LED_On();
}


// EXTI4 處理函數(shù), key0;
void EXTI4_IRQHandler(void)
{
	EXTI_ClearITPendingBit(EXTI_Line4);
	
	LED_Off();
}

5> 中斷向量表

STM32F1 - 中斷系統(tǒng),STM32F1-外設(shè)驅(qū)動(dòng),stm32,嵌入式硬件,單片機(jī)

中斷數(shù)量:70個(gè)

STM32F103ZET6有70個(gè)中斷 = 60外設(shè)中斷 + 10個(gè)系統(tǒng)中斷;


6> 總中斷開(kāi)關(guān)

// 文件core_cm3.h:

static __INLINE void __enable_irq()               { __ASM volatile ("cpsie i"); }
static __INLINE void __disable_irq()              { __ASM volatile ("cpsid i"); }

STM32F1 - 中斷系統(tǒng),STM32F1-外設(shè)驅(qū)動(dòng),stm32,嵌入式硬件,單片機(jī)


7> 總結(jié)

GPIO, AFIO, EXTI, NVIC等功能模塊,學(xué)習(xí)它們們時(shí)各個(gè)擊破;
了解他們內(nèi)部結(jié)構(gòu),內(nèi)部寄存器,找點(diǎn)感覺(jué),
重點(diǎn)看看每個(gè)模塊的函數(shù)如何使用,
會(huì)使用后,看看內(nèi)部如何編寫(xiě)的,非常能提高編程技能;文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-835139.html

到了這里,關(guān)于STM32F1 - 中斷系統(tǒ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)文章

  • STM32F1基于STM32CubeMX配置硬件SPI驅(qū)動(dòng)1.8寸TFT LCD128X160 ST7735S屏幕

    STM32F1基于STM32CubeMX配置硬件SPI驅(qū)動(dòng)1.8寸TFT LCD128X160 ST7735S屏幕

    ??相關(guān)篇《【STM32CubeIDE】STM32F103硬件SPI驅(qū)動(dòng)1.8寸TFT LCD128X160 ST7735S屏幕》 ?驅(qū)動(dòng)效果就不做演示了,和上面的相關(guān)篇一樣,主要是為了方便使用MDK Keil開(kāi)發(fā)的使用。所以花了點(diǎn)時(shí)間從上面的工程當(dāng)中做了分離,重新使用STM32CubeMX配置一個(gè)方便二次開(kāi)發(fā)移植使用和配置的工程。本

    2024年02月03日
    瀏覽(27)
  • STM32的中斷系統(tǒng)詳解(嵌入式學(xué)習(xí))

    STM32的中斷系統(tǒng)詳解(嵌入式學(xué)習(xí))

    中斷是處理器中的一種機(jī)制,用于響應(yīng)和處理突發(fā)事件或緊急事件。當(dāng)發(fā)生中斷時(shí),當(dāng)前正在執(zhí)行的程序會(huì)被暫時(shí)中止,處理器會(huì)跳轉(zhuǎn)到中斷處理程序(也稱為中斷服務(wù)例程),對(duì)中斷事件進(jìn)行處理。處理完中斷后,處理器再返回到被中斷的程序繼續(xù)執(zhí)行。 中斷可以分為內(nèi)部

    2024年02月12日
    瀏覽(35)
  • STM32F4基礎(chǔ):時(shí)鐘系統(tǒng)、中斷及定時(shí)器

    STM32F4基礎(chǔ):時(shí)鐘系統(tǒng)、中斷及定時(shí)器

    ? ? ? ? 時(shí)鐘系統(tǒng)是CPU的脈搏, 由于STM32 本身非常復(fù)雜,外設(shè)非常的多,并不是所有外設(shè)都需要系統(tǒng)時(shí)鐘這么高的頻率,比如看門狗以及 RTC 只需要幾十 k 的時(shí)鐘即可,因此STM32F4 的時(shí)鐘系統(tǒng)比較復(fù)雜 ,不像簡(jiǎn)單的 51 單片機(jī)一個(gè)系統(tǒng)時(shí)鐘就可以解決一切。 ? ? ? ? 如下圖所

    2023年04月09日
    瀏覽(21)
  • STM32F103標(biāo)準(zhǔn)外設(shè)庫(kù)——認(rèn)識(shí)STM32(一)

    STM32F103標(biāo)準(zhǔn)外設(shè)庫(kù)——認(rèn)識(shí)STM32(一)

    ?個(gè)人名片: ??作者簡(jiǎn)介:一名喜歡分享和記錄學(xué)習(xí)的在校大學(xué)生 ??個(gè)人主頁(yè):妄北y ??個(gè)人QQ:2061314755 ??個(gè)人郵箱:2061314755@qq.com ??個(gè)人WeChat:Vir2021GKBS ?? 本文由妄北y原創(chuàng),首發(fā)CSDN ?????? ??座右銘:大多數(shù)人想要改造這個(gè)世界,但卻罕有人想改造自己。 專欄導(dǎo)

    2024年01月15日
    瀏覽(28)
  • 基于STM32F1的舵機(jī)控制

    基于STM32F1的舵機(jī)控制

    一、SG90舵機(jī)介紹 SG90是有三個(gè)版本的,90度版、180度版和360度版,前兩個(gè)只是舵機(jī)旋轉(zhuǎn)角度的范圍不一樣,可以在這個(gè)范圍內(nèi)任意的控制舵機(jī)所轉(zhuǎn)的角度,而360版本的是一直旋轉(zhuǎn)的,我們不能控制它旋轉(zhuǎn)的角度,只能控制它旋轉(zhuǎn)的速度,這里我們?cè)谫I的時(shí)候就要注意一點(diǎn),根

    2023年04月25日
    瀏覽(20)
  • STM32學(xué)習(xí)-基于STM32F1具有控制菜單的溫控小風(fēng)扇

    STM32學(xué)習(xí)-基于STM32F1具有控制菜單的溫控小風(fēng)扇

    本文僅作個(gè)人學(xué)習(xí)記錄,非教程,內(nèi)容不完整,僅供參考,請(qǐng)勿用于商業(yè)用途。 使用ADC讀取環(huán)境溫度,根據(jù)環(huán)境溫度設(shè)置PWM占空比,從而控制FAN轉(zhuǎn)速??刂撇藛喂δ埽?.設(shè)置特定轉(zhuǎn)速,2.切換為手動(dòng)模式任意控制FAN轉(zhuǎn)速。 整個(gè)系統(tǒng)并不復(fù)雜:MCU負(fù)責(zé)運(yùn)行代碼并輸出信號(hào);NTC是

    2024年02月06日
    瀏覽(25)
  • STM32 Cubemx 同名外設(shè)中斷及回調(diào)

    STM32 Cubemx 同名外設(shè)中斷及回調(diào)

    最近在學(xué)習(xí)STM32,采用HAL庫(kù)開(kāi)發(fā)方式。記錄一下 同名外設(shè)中斷及回調(diào) 。 這里提及的同名外設(shè)指USART1/2之類的 相同外設(shè) ,但 不是同一個(gè)instance 。 以使用cubemx配置兩個(gè)同名外設(shè)EXTI0/EXT4為例。 在NVIC配置界面, 勾選EXTI line0/4 . 在Code Generation欄,勾選以下三項(xiàng): Generate Enable in I

    2024年02月10日
    瀏覽(22)
  • STM32項(xiàng)目設(shè)計(jì):基于stm32f1的智能門鎖(附項(xiàng)目視頻全套教程)

    STM32項(xiàng)目設(shè)計(jì):基于stm32f1的智能門鎖(附項(xiàng)目視頻全套教程)

    ? 最近假期比較閑,拿著之前剩下的模塊做了一個(gè)小玩具, 先制定一下此次玩具的規(guī)劃,也可以理解為簡(jiǎn)易項(xiàng)目書(shū)。 開(kāi)發(fā)軟件:keil 硬件選型:STM32F103C8T6、RFID讀卡器、oled屏幕、按鍵模塊、藍(lán)牙通信模塊、蜂鳴器、舵機(jī); 上位機(jī): 1.上位機(jī)可以對(duì)密碼進(jìn)行設(shè)置、重置 2.上位機(jī)可以

    2024年02月10日
    瀏覽(18)
  • STM32F1系列簡(jiǎn)單介紹及入門學(xué)習(xí)

    STM32F1系列簡(jiǎn)單介紹及入門學(xué)習(xí)

    1.什么是STM32 STM32,從字面上來(lái)理解,ST 是意法半導(dǎo)體,M 是 Microelectronics 的縮寫(xiě),32 表示32 位,合起來(lái)理解,STM32 就是指 ST 公司開(kāi)發(fā)的 32 位微控制器。在如今的 32 位控制器當(dāng)中,STM32 可以說(shuō)是最璀璨的新星。 STM32F103 采用的是 Cortex-M3 內(nèi)核,內(nèi)核即 CPU,由 ARM 公司設(shè)計(jì)。AR

    2023年04月19日
    瀏覽(36)
  • STM32F1定時(shí)器-PWM輸出

    STM32F1定時(shí)器-PWM輸出

    STM32 PWM工作過(guò)程 ARR寄存器決定PWM周期,CCR寄存器決定占空比 通道1為例 的PWM輸出電路圖 CCR1:捕獲比較(值)寄存器(x =1,2,3,4):設(shè)置比較值。 CCMR1:OC1M[2:0]位:對(duì)于PWM方式下,用于設(shè)置PWM模式1【110】 或者PWM模式2【111】 CCER:CC1P位:輸入/捕獲1輸出極性。0:高電平有效,1:低電平

    2024年02月09日
    瀏覽(19)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包