您的位置 首页 电路

STM32笔记之九:打断它来为我就事,EXIT (外部I/O中止)使用

a)目的:跟串口输入类似,不使用中断进行的IO输入效率也很低,而且可以通过EXTI插入按钮事件,本节联系EXTI中断。b)初始化函数定义:void

a)意图:跟串口输入相似,不运用中止进行的IO输入功率也很低,并且能够经过EXTI刺进按钮工作,本节联络EXTI中止。

b)初始化函数界说:

void EXTI_Configuration(void); //界说IO中止初始化函数

c)初始化函数调用:

EXTI_Configuration();//IO中止初始化函数调用简略运用:

d)初始化函数:

void EXTI_Configuration(void)

{

EXTI_InitTypeDef EXTI_InitStructure;//EXTI初始化结构界说

EXTI_ClearITPendingBit(EXTI_LINE_KEY_BUTTON);//铲除中止标志

GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource3);//管脚挑选

GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource4);

GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource5);

GPIO_EXTILineConfig(GPIO_PortSourceGPIOA, GPIO_PinSource6);

EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;//工作挑选

EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Falling;//触发形式

EXTI_InitStructure.EXTI_Line = EXTI_Line3 | EXTI_Line4; //线路挑选

EXTI_InitStructure.EXTI_LineCmd = ENABLE;//发动中止

EXTI_Init(&EXTI_InitStructure);//初始化

}

e)RCC初始化函数中敞开I/O时钟

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA , ENABLE);

GPIO初始化函数中界说输入I/O管脚。

//IO输入,GPIOA的4脚输入

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//上拉输入

GPIO_Init(GPIOA, &GPIO_InitStructure);//初始化

f)在NVIC的初始化函数里边添加以下代码翻开相关中止:

NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQChannel;//通道

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;//占先级

NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;//呼应级

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;//发动

NVIC_Init(&NVIC_InitStructure);//初始化

g)在stm32f10x_it.c文件中找到void USART1_IRQHandler函数,在其间添入履行代码。一般最少三个过程:先运用if句子判别是产生那个中止,然后铲除中止标志位,最终给字符串赋值,或做其他工作。

if(EXTI_GetITStatus(EXTI_Line3) != RESET)//判别中止产生来历

{ EXTI_ClearITPendingBit(EXTI_Line3);//铲除中止标志

USART_SendData(USART1, 0x41);//发送字符“a”

GPIO_WriteBit(GPIOB, GPIO_Pin_2, (BitAction)(1-GPIO_ReadOutputDataBit(GPIOB, GPIO_Pin_2)));//LED产生明暗替换

}

h)中止注意事项:

中止产生后有必要铲除中止位,不然会呈现死循环不断产生这个中止。然后需要对中止类型进行判别再履行代码。

运用EXTI的I/O中止,在完结RCC与GPIO硬件设置之后需要做三件事:初始化EXTI、NVIC开中止、编写中止履行代码。

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

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

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

微信扫一扫关注我们

返回顶部