初级会员

- 积分
- 68
- 金钱
- 68
- 注册时间
- 2019-3-28
- 在线时间
- 11 小时
|
1金钱
代码如下:
# include <stm32f10x.h>
# include "delay.h"
# include "sys.h"
# define LED0 PBout(5)
void gpio_init ()
{
GPIO_InitTypeDef GPIO_InitStruct;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB | RCC_APB2Periph_GPIOE , ENABLE);//gpio及afio时钟使能
//gpioe 端口4外部中断配置
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IPU;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_4;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_Init(GPIOE, &GPIO_InitStruct);
//gpiob 端口5配置
GPIO_InitStruct.GPIO_Mode=GPIO_Mode_Out_PP;
GPIO_InitStruct.GPIO_Pin=GPIO_Pin_5;
GPIO_InitStruct.GPIO_Speed=GPIO_Speed_10MHz;
GPIO_Init(GPIOB, &GPIO_InitStruct);
GPIO_SetBits(GPIOB,GPIO_Pin_5);
}
void exti_init()
{
EXTI_InitTypeDef EXTI_InitStruct;
NVIC_InitTypeDef NVIC_InitStruct;
gpio_init ();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO , ENABLE);//端口复用时钟使能
GPIO_EXTILineConfig(GPIO_PortSourceGPIOE , GPIO_PinSource4 );//中断线映射
EXTI_InitStruct.EXTI_Line=EXTI_Line4;//线4
EXTI_InitStruct.EXTI_LineCmd=ENABLE;//使能
EXTI_InitStruct.EXTI_Mode=EXTI_Mode_Interrupt;//外部中断模式
EXTI_InitStruct.EXTI_Trigger=EXTI_Trigger_Falling;//下降沿触发
EXTI_Init(&EXTI_InitStruct);
//中断设置
NVIC_InitStruct.NVIC_IRQChannel=EXTI4_IRQn;
NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=2;
NVIC_InitStruct.NVIC_IRQChannelSubPriority=2;
NVIC_Init(&NVIC_InitStruct);
}
//中断服务函数
void EXTI4_IRQHandler()
{
// delay_ms(10);//消抖
LED0=!LED0;
EXTI_ClearITPendingBit(EXTI_Line4);
}
int main ()
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
// gpio_init ();
exti_init();
GPIO_ResetBits(GPIOB,GPIO_Pin_5);
while(1);
}
按键按下,外部中断没反应。
|
|