初级会员

- 积分
- 126
- 金钱
- 126
- 注册时间
- 2018-2-3
- 在线时间
- 13 小时
|

楼主 |
发表于 2018-3-17 16:56:30
|
显示全部楼层
本帖最后由 Dragons9527 于 2018-3-17 16:57 编辑
#include "exti.h"
static void EXTI_NVIC_Config(void)
{
NVIC_InitTypeDef NVIC_InitStruct;
//配置优先级组
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
NVIC_InitStruct.NVIC_IRQChannel = EXTI0_IRQn;
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;
NVIC_Init(&NVIC_InitStruct);
}
void EXIT1_KEY_Config(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
EXTI_InitTypeDef EXTI_InitStruct;
//配置中断优先级
EXTI_NVIC_Config();
//初始化GPIO
RCC_APB2PeriphClockCmd(KEY_EXTI_CLK,ENABLE);
GPIO_InitStruct.GPIO_Pin = KEY_EXTI_PIN;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
GPIO_Init(KEY_EXTI_PROT,&GPIO_InitStruct);
//初始化EXTI
GPIO_EXTILineConfig(GPIO_PortSourceGPIOC, GPIO_PinSource0);
//配置AFIO
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);
EXTI_InitStruct.EXTI_Line = EXTI_Line0;
EXTI_InitStruct.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStruct.EXTI_Trigger= EXTI_Trigger_Falling;
EXTI_InitStruct.EXTI_LineCmd= ENABLE;
EXTI_Init(&EXTI_InitStruct);
}
#ifndef __EXTI_H
#define __EXTI_H
#include "stm32f10x.h"
#define KEY_EXTI_PROT GPIOC
#define KEY_EXTI_PIN GPIO_Pin_0
#define KEY_EXTI_CLK RCC_APB2Periph_GPIOC
#define KEY_ON 1
#define KEY_OFF 0
static void EXTI_NVIC_Cnfig(void);
void EXIT1_KEY_Config(void);
#endif
void EXTI0_IRQHandler(void)
{
if(EXTI_GetITStatus(EXTI_Line0) !=RESET)
{
BEEP_TOGGLE;
}
EXTI_ClearITPendingBit(EXTI_Line0);
}
#include "stm32f10x.h"
#include "exti.h"
#include "led.h"
#include "beep.h"
#include "delay.h"
int main(void)
{
LED_GPIO_Confing();
EXIT1_KEY_Config();
BEEP_GPIO_Init();
while(1)
{
}
}
#include "led.h"
#include "delay.h"
void LED_GPIO_Confing(void)
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphClockCmd(LED_GPIO_CLK, ENABLE);
GPIO_InitStruct.GPIO_Pin = LED1_GPIO_PIN;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Speed= GPIO_Speed_50MHz;
GPIO_Init(LED_GPIO_PORT, &GPIO_InitStruct);
PEout(0)=0;
}
#ifndef _led_h
#define _led_h
#include "stm32f10x.h"
#define LED1_GPIO_PIN GPIO_Pin_0
#define LED2_GPIO_PIN GPIO_Pin_1
#define LED3_GPIO_PIN GPIO_Pin_2
#define LED_GPIO_PORT GPIOE
#define LED_GPIO_CLK RCC_APB2Periph_GPIOE
#define LED1_TOGGLE {LED_GPIO_PORT->ODR ^=LED1_GPIO_PIN;}
void LED_GPIO_Confing(void);
#endif
这是代码
|
|