按键中断程序

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

* 1个LED指示灯,对应的GPIO为 : PC0输出为1点亮LED 输出为0关闭LED

另外PC1为外部中断触发:按键按下时为低电平,即可设置为低电平触发

/* GPIO配置函数 */

void GPIO_Configuration(void)

{

/*定义2个结构体变量 */

GPIO_InitTypeDef GPIO_InitStructure;

/*开启GPIOB,GPIOC ,复用口时钟的时钟 */

RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);

/*给GPIOC_Pin_1一个初始值*/

GPIO_ResetBits(GPIOC, GPIO_Pin_0);

配置IO口,初始化IO

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 ;

// 将连接LED的GPIO设置为推挽输出

GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;

//设置为2MHZ的速度,响应时间,没要求越小越好GPIO_Mode_IPU为输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;

//初始化GPIOC

GPIO_Init(GPIOC, &GPIO_InitStructure);

/*给KEY_InitStructure.GPIO_Pin KEY_InitStructure.GPIO_Mode KEY_InitStructure.GPIO_Speed付初始值*/

GPIO_InitStructure.GPIO_Pin=GPIO_Pin_1;

//设置为上拉输入

GPIO_InitStructure.GPIO_Mode=GPIO_Mode_IPU ;

//设置为2MHZ的速度

GPIO_InitStructure.GPIO_Speed = GPIO_Speed_2MHz;

//初始化GPIOB

GPIO_Init(GPIOC, &GPIO_InitStructure);

//设置GPIOC的中断标志位

GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource1); }

/******配置EXTI**********/

void EXTI_Configuration(void)

{ //定义一个结构体

EXTI_InitTypeDef EXTI_InitStructure;

//设置中段线

EXTI_InitStructure.EXTI_Line = EXTI_Line1;

//使能中断线

EXTI_InitStructure.EXTI_LineCmd = ENABLE ;

//设置中断模式

EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;

//设置中断触发方式

EXTI_InitStructure.EXTI_Trigger =EXTI_Trigger_Falling;

//初始化中断

EXTI_Init(&EXTI_InitStructure);

}

/********配置优先级*****************/

void NVIC_Configuration(void)

{

//定义一个结构体

NVIC_InitTypeDef NVIC_InitStructure;

//设置优先级组

NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0) ;

//设置存入寄存器

NVIC_SetVectorTable (NVIC_VectTab_FLASH ,0x0);

//设置外部中断1线这里对应的是外部中断1因为我选的是之前的PC1来触发另外EXTI5_9_IRQn则表示外部中断5-9线。

NVIC_InitStructure.NVIC_IRQChannel =EXTI1_IRQn;

//使能优先级

NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

//配置抢断优先级这个是决定中断跳转可否嵌套的依据***非常重要

NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority =0; //配置响应优先级

NVIC_InitStructure.NVIC_IRQChannelSubPriority =0;

//初始化优先级

NVIC_Init(&NVIC_InitStructure);

}

//主函数

int main(void)

{

/*

//调用初始化GPIO函数

GPIO_Configuration ();

EXTI_Configuration ();

NVIC_Configuration ();

while(1)

{

;

}

}

在it.c中的程序:

相关文档
最新文档