#include<stm32f10x.h>
void led_init(void);
void key_init(void);
void exti_init(void);
void delay(unsigned int ms)
{
int i,j;
for(i=0;i<ms;i++)
for(j=0;j<65530;j++);
}
void exti_group(unsigned char group)
{
u32 temp,temp1;
temp1=(~group)&0x07;
temp<<=8;
temp=SCB->AIRCR;
temp&=0X0000F8FF;
temp|=0X05FA0000;
temp|=temp1;
SCB->AIRCR=temp;
}
int main()
{
led_init();
key_init();
exti_init();
while(1)
{
GPIOA->BSRR=1<<8;
//GPIOA->BRR=1<<8;
}
}
void led_init()
{
RCC->APB2ENR|=1<<2;
GPIOA->CRH&=0XFFFFFFF0;
GPIOA->CRH|=0X00000003;
GPIOA->ODR|=1<<8;
}
void key_init()
{
RCC->APB2ENR|=1<<4;
GPIOC->CRL&=0XFF0FFFFF;
GPIOC->CRL|=0X00800000;
GPIOC->ODR|=1<<5;
}
void exti_init()
{
RCC->APB2ENR|=0x01;
AFIO->EXTICR[1]=0x00000020; // PC 5 0000 0000 0010 0000
EXTI->FTSR|=1<<0;
exti_group(2);
NVIC->IP[6]|=0Xa0;
EXTI->IMR|=1<<0;
NVIC->ISER[0]=1<<6; //0X00000020;
}
void EXTI0_IRQHandler(void)
{
if(GPIOC->IDR==0X20)
{
if((GPIOC->IDR&0X0020)==0)
{
GPIOA->BRR=1<<8;
delay(30);
}
}
EXTI->  R=1<<0;
}
|