久久ER99热精品一区二区-久久精品99国产精品日本-久久精品免费一区二区三区-久久综合九色综合欧美狠狠

新聞中心

EEPW首頁 > 嵌入式系統 > 設計應用 > STM32的學習心得之外部中斷/事件控制器(EXTI)

STM32的學習心得之外部中斷/事件控制器(EXTI)

作者: 時間:2016-11-28 來源:網絡 收藏
外部中斷/事件我的理解是可以將單片機的IO口全部設置為外部中斷口,我們可以根據觸發哪個IO口中斷,去執行相應的中斷處理函數。這個其實很簡單,51一般有2個外部中斷口,而stm32將其擴展,每個IO口都可以作為外部中斷口。

外部中斷配置也很簡單,只需要打開相應的IO口配置,時鐘,打開stm32f10x_conf.h里的 #include "stm32f10x_exti.h" ,配置EXIT和中斷處理函數即可。下面是簡單的實例(基于3.0庫):

本文引用地址:http://cqxgywz.com/article/201611/322971.htm

void GPIO_Configuration(void)//配置GPIOC_5口作為外部中斷口
{

GPIO_InitTypeDefGPIO_InitStructure;
GPIO_InitStructure.GPIO_Pin= GPIO_Pin_5;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_10MHz;
GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IN_FLOATING ;
GPIO_Init(GPIOC, &GPIO_InitStructure);

}

void EXTI_Configuration(void)
{
EXTI_InitTypeDef EXTI_InitStructure;
EXTI_InitStructure.EXTI_Line = EXTI_Line5; //外部中斷線
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//中斷模式
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;//中斷觸發方式
EXTI_InitStructure.EXTI_LineCmd = ENABLE;//打開中斷
EXTI_Init(&EXTI_InitStructure);
GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource5); //選擇 GPIO管腳用作外部中斷線路

}

void NVIC_Configuration(void)
{
NVIC_InitTypeDef NVIC_InitStructure;

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0);// 搶占式優先級別

NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;//指定中斷源
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; // 指定響應優先級別1
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

}

//中斷處理函數

void EXTI9_5_IRQHandler(void)
{

if(EXTI_GetITStatus(EXTI_Line5) != RESET)
{

//添加中斷處理程序

EXTI_CleaRFlag(EXTI_Line5);
EXTI_ClearITPendingBit(EXTI_Line5);

}

}



評論


技術專區

關閉