您的位置 首页 技术

STM32的学习心得之外部中止/事情控制器(EXTI)

外部中断事件我的理解是可以将单片机的IO口全部设置为外部中断口,我们可以根据触发哪个IO口中断,去执行相应的中断处理函数。这个其实很

外部中止/事情我的了解是能够将单片机的IO口悉数设置为外部中止口,咱们能够依据触发哪个IO口中止,去履行相应的中止处理函数。这个其实很简略,51一般有2个外部中止口,而stm32将其扩展,每个IO口都能够作为外部中止口。

外部中止装备也很简略,只需要翻开相应的IO口装备,时钟,翻开stm32f10x_conf.h里的 #include “stm32f10x_exti.h” ,装备EXIT和中止处理函数即可。下面是简略的实例(根据3.0库):

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);

}

}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/xinpin/jishu/256518.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部