开 发 板:FRDM MKL02Z4
模   块:GPIO模块
代    码:
//例程:通过按键中断,同时控制LED,按键按下LED状态翻转
intmain(void)
{
 SIM_SCGC5|=(1UL<<10);  //使能PORTB模块的时钟
 PORTB_PCR11|=(1UL<<8)  //PORTB的Pin11配置为GPIO模式
 GPIOB_PDDR|=(1UL<<1  //GPIOB的Pin11配置为输出模式
 PORTB_PCR10|=(1UL<<8);  //PORTB的Pin10配置为GPIO模式
 GPIOB_PDDR|=(1UL<<10  //GPIOB的Pin10配置为输出模式
 SIM_SCGC5 |=(1UL<<9);  //使能PORTA模块的时钟
 PORTA_PCR12|=0x2u;    //PORTA的Pin12上下拉使能  
 PORTA_PCR12|=0x1u;    //PORTA的Pin12配置为上拉  
 PORTA_PCR12|=(1UL<<8);  //PORTA的Pin12配置为GPIO模式  
 GPIOA_PDDR&=~(1UL<<1  //GPIOA的Pin12配置为输入2); 
 PORTA_PCR12&=~(0xF0000u); 
 PORTA_PCR12|=0xA0000u;   //PORTA的中断触发方式为下降沿
 NVIC->ISER[0]|=(1<<30);  //使能PORTA的中断
 //NVIC->ISER[0] = (1 << ((uint32_t)(30) & 0x1F));
 while(1)
 {
  
 }
}
voidPORTA_IRQHandler(void)   //中断操作函数
{
 if(PORTA_ISFR==(1<<12))  //检测中断,中断标志是否为1   
 {
  PORTA_PCR12|=0x1000000u; //清除中断使能
  if((GPIOA_PDIR&(1<<12))==0)//检测GPIOA的输入数据寄存器的12位是否为1
  {
    GPIOB_PTOR|=(1<<11);//GPIOB的输出数据寄存器的位11翻转
    GPIOB_PTOR|=(1<<10);//GPIOB的输出数据寄存器的位10翻转
  }
 }
}