新手入门
- 积分
- 12
- 金钱
- 12
- 注册时间
- 2016-5-22
- 在线时间
- 1 小时
|
1金钱
void EXTIX_Init(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
RCC->APB2ENR|=1<<0; //AFIO时钟开启
RCC->APB2ENR|=1<<2; //GPIOA时钟开启
RCC->APB2ENR|=1<<4; //GPIOC时钟开启
GPIOC->CRL&=0XFF0FFFFF; //GPIOC.5输入模式
GPIOC->CRL|=0X00800000;
GPIOC->ODR|=1<<5; //GPIOC.5上拉
GPIOA->CRH&=0XFFFFFFF0; //GPIOA.8推挽输出
GPIOA->CRH|=0X00000003;
GPIOA->ODR|=1<<8; //GPIOA.8输出高
GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource5);
EXTI->FTSR|=1<<5; //下降沿触发
EXTI->IMR|=1<<5; //外部中断使能
NVIC_InitStructure.NVIC_IRQChannel=EXTI9_5_IRQn;
NVIC_InitStructure.NVIC_IRQChannelCmd=ENABLE;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;
NVIC_InitStructure.NVIC_IRQChannelSubPriority=2;
NVIC_Init(&NVIC_InitStructure);
}
void EXTI9_5_IRQHandler(void)
{
if(0X00000020==(EXTI->PR&0X00000020))
{
GPIOA->ODR&=~(1<<8);
delay_ms(2000);
GPIOA->ODR|=1<<8;
delay_ms(2000);
}
EXTI->PR|=1<<5;
}
上面的程序是可以用的。
但是我想把GPIO_EXTILineConfig(GPIO_PortSourceGPIOC,GPIO_PinSource5);这句改成用寄存方式写出来,是不是操作AFIO->EXTICR这个寄存器,但是我看资料写出来的AFIO->EXTICR[2]=0x0002;不能用,是不是还有哪个寄存器没有用到。
|
|