初级会员

- 积分
- 114
- 金钱
- 114
- 注册时间
- 2016-4-18
- 在线时间
- 17 小时
|
1金钱
/*库函数*/
void EXTIX_Init(void)
{
EXTI_InitTypeDef EXTI_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC,ENABLE);//使能portc时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;//PC5
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; //设置成上拉输入
GPIO_Init(GPIOC, &GPIO_InitStructure);// 初始化GPIOC5
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//外部中断,使能AFIO时钟
//中断线以及中断的初始化设置
GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource5);
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); //初始化EXTI寄存器
NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn; //使能按键所在的中断通道
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0x02;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0x02;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; //使能外部中断
NVIC_Init(&NVIC_InitStructure);
}
/*寄存器*/
void exti_init()
{
RCC->APB2ENR|=1<<4;//使能GPIOC时钟
RCC->APB2ENR|=1;//使能AFIO时钟
GPIOC->CRL&=0XFF0FFFFF;
GPIOC->CRL|=0X00800000;
GPIOC->ODR|=1<<5; //配置PC0为上拉输入
AFIO->EXTICR[1]&=~(0x000f<<4);
AFIO->EXTICR[1]|=0x02<<4; //设置PC5连接到中断线上
EXTI->IMR|=1<<5;//中断使能
EXTI->FTSR|=1<<5;//优先级设置
NVIC->ISER[0]=1<<7;//
NVIC->IP[7]=0Xa0;//
}
都是实现同一功能
为什么库函数函数的可以实现功能,寄存器的不能,看了好久没发现哪错!!!!
|
|