• 方案介紹
    • 【1】外部中斷相關(guān)知識(shí)介紹
    • 【2】外部中斷示例代碼
  • 附件下載
  • 相關(guān)推薦
申請(qǐng)入駐 產(chǎn)業(yè)圖譜

STM32F407 外部中斷配置步驟

04/01 08:54
443
加入交流群
掃碼加入
獲取工程師必備禮包
參與熱點(diǎn)資訊討論

更多詳細(xì)資料請(qǐng)聯(lián)系.docx

共1個(gè)文件

介紹STM32F407外部中斷配置步驟,以按鍵為例,實(shí)現(xiàn)外部中斷配置,使用按鍵觸發(fā)中斷進(jìn)行LED燈控制。

【1】外部中斷相關(guān)知識(shí)介紹

img

CM4 內(nèi)核支持 256 個(gè)中斷,其中包含了 16 個(gè)內(nèi)核中斷和 240 個(gè)外部中斷,并且具有 256級(jí)的可編程中斷設(shè)置。但 STM32F4 并沒(méi)有使用 CM4 內(nèi)核的全部東西,而是只用了它的一部分。

STM32F40xx/STM32F41xx 總共有 92 個(gè)中斷, STM32F42xx/STM32F43xx 則總共有 96 個(gè)中斷,以下僅以 STM32F40xx/41xx 為例講解。

STM32F40xx/STM32F41xx 的 92 個(gè)中斷里面, 包括 10 個(gè)內(nèi)核中斷和 82 個(gè)可屏蔽中斷,具有 16 級(jí)可編程的中斷優(yōu)先級(jí), 而我們常用的就是這 82 個(gè)可屏蔽中斷。

img

img

img

【2】外部中斷示例代碼

exti.c代碼

#include "exti.h"

/*
函數(shù)功能:按鍵外部中斷初始化
硬件連接:
KEY0 --->PE4  按下為低電平
KEY1 --->PE3  按下為低電平
KEY2 --->PE2  按下為低電平
KEY_UP-->PA0  按下為高電平
*/
void KEY_EXTI_Init(void)
{
		/*1. 開(kāi)啟SYSCFG時(shí)鐘 */
		RCC->APB2ENR|=1<<14;
		
	  /*2. 開(kāi)放來(lái)自線x上的中斷請(qǐng)求*/
	  EXTI->IMR|=1<<0; //中斷線0
	  EXTI->IMR|=1<<2; //中斷線2
	  EXTI->IMR|=1<<3; //中斷線3
	  EXTI->IMR|=1<<4; //中斷線4
	
	  /*3. 配置中斷線觸發(fā)邊沿*/
	  EXTI->RTSR|=1<<0; //上升沿
	  EXTI->FTSR|=1<<0; //下降沿
	  
		EXTI->RTSR|=1<<2; //上升沿
	  EXTI->FTSR|=1<<2; //下降沿
	 
		EXTI->RTSR|=1<<3; //上升沿
	  EXTI->FTSR|=1<<3; //下降沿
	
	  EXTI->RTSR|=1<<4; //上升沿
	  EXTI->FTSR|=1<<4; //下降沿
	  
	  /*4. 配置產(chǎn)生中斷的對(duì)應(yīng)IO口*/
	  SYSCFG->EXTICR[0]&=~(0xf<<0*4);
	  SYSCFG->EXTICR[0]|=0x0<<0*4;
	  
		SYSCFG->EXTICR[0]&=~(0xf<<2*4);
	  SYSCFG->EXTICR[0]|=0x4<<2*4;
		
		SYSCFG->EXTICR[0]&=~(0xf<<3*4);
	  SYSCFG->EXTICR[0]|=0x4<<3*4;
		
		SYSCFG->EXTICR[1]&=~(0xf<<0*4);
	  SYSCFG->EXTICR[1]|=0x4<<0*4;
		
	  /*5. 配置中斷優(yōu)先級(jí)*/
	  SetNVICPriorityGrouping(EXTI0_IRQn,2,2);
		SetNVICPriorityGrouping(EXTI2_IRQn,2,2);
		SetNVICPriorityGrouping(EXTI3_IRQn,2,2);
		SetNVICPriorityGrouping(EXTI4_IRQn,2,2);
}	

/*
功 能:外部中斷線0中斷服務(wù)函數(shù)
*/

void EXTI0_IRQHandler(void)
{
	 DelayMs(10);
	 if(KEY_UP)
	 {
			LED0=!LED0;
			LED1=!LED1;
			printf("KEY_UPrn");
	 }
	 EXTI->PR|=1<<0; //清除中斷標(biāo)志位
}

/*
功 能:外部中斷線2中斷服務(wù)函數(shù)
*/
void EXTI2_IRQHandler(void)
{
	 DelayMs(10);
	 if(KEY2==0)
	 {
			LED0=!LED0;
			LED1=!LED1;
			printf("KEY2rn");
	 }
	 EXTI->PR|=1<<2; //清除中斷標(biāo)志位
}

/*
功 能:外部中斷線3中斷服務(wù)函數(shù)
*/
void EXTI3_IRQHandler(void)
{
	 DelayMs(10);
	 if(KEY1==0)
	 {
			LED0=!LED0;
			LED1=!LED1;
		  printf("KEY1rn");
	 }
	 EXTI->PR|=1<<3; //清除中斷標(biāo)志位
}


/*
功 能:外部中斷線4中斷服務(wù)函數(shù)
*/
void EXTI4_IRQHandler(void)
{
	 DelayMs(10);
	 if(KEY0==0)
	 {
			LED0=!LED0;
			LED1=!LED1;
		  printf("KEY0rn");
	 }
	 EXTI->PR|=1<<4; //清除中斷標(biāo)志位
}

main.c代碼

#include "stm32f4xx.h" // Device header
#include "led.h"
#include "delay.h"
#include "key.h"
#include "usart.h"
#include "sys.h"
#include "exti.h"


int main(void)
{
		LED_Init();
		KEY_Init();
		USART1_Init(84,115200);
		KEY_EXTI_Init();
		while(1)
		{
				
		}
}

  • 更多詳細(xì)資料請(qǐng)聯(lián)系.docx
    下載
意法半導(dǎo)體

意法半導(dǎo)體

意法半導(dǎo)體(ST)集團(tuán)于1987年6月成立,是由意大利的SGS微電子公司和法國(guó)Thomson半導(dǎo)體公司合并而成。1998年5月,SGS-THOMSON Microelectronics將公司名稱改為意法半導(dǎo)體有限公司。意法半導(dǎo)體是世界最大的半導(dǎo)體公司之一,公司銷售收入在半導(dǎo)體工業(yè)五大高速增長(zhǎng)市場(chǎng)之間分布均衡(五大市場(chǎng)占2007年銷售收入的百分比):通信(35%),消費(fèi)(17%),計(jì)算機(jī)(16%),汽車(16%),工業(yè)(16%)。 據(jù)最新的工業(yè)統(tǒng)計(jì)數(shù)據(jù),意法半導(dǎo)體是全球第五大半導(dǎo)體廠商,在很多市場(chǎng)居世界領(lǐng)先水平。例如,意法半導(dǎo)體是世界第一大專用模擬芯片和電源轉(zhuǎn)換芯片制造商,世界第一大工業(yè)半導(dǎo)體和機(jī)頂盒芯片供應(yīng)商,而且在分立器件、手機(jī)相機(jī)模塊和車用集成電路領(lǐng)域居世界前列.

意法半導(dǎo)體(ST)集團(tuán)于1987年6月成立,是由意大利的SGS微電子公司和法國(guó)Thomson半導(dǎo)體公司合并而成。1998年5月,SGS-THOMSON Microelectronics將公司名稱改為意法半導(dǎo)體有限公司。意法半導(dǎo)體是世界最大的半導(dǎo)體公司之一,公司銷售收入在半導(dǎo)體工業(yè)五大高速增長(zhǎng)市場(chǎng)之間分布均衡(五大市場(chǎng)占2007年銷售收入的百分比):通信(35%),消費(fèi)(17%),計(jì)算機(jī)(16%),汽車(16%),工業(yè)(16%)。 據(jù)最新的工業(yè)統(tǒng)計(jì)數(shù)據(jù),意法半導(dǎo)體是全球第五大半導(dǎo)體廠商,在很多市場(chǎng)居世界領(lǐng)先水平。例如,意法半導(dǎo)體是世界第一大專用模擬芯片和電源轉(zhuǎn)換芯片制造商,世界第一大工業(yè)半導(dǎo)體和機(jī)頂盒芯片供應(yīng)商,而且在分立器件、手機(jī)相機(jī)模塊和車用集成電路領(lǐng)域居世界前列.收起

查看更多

相關(guān)推薦