[NUC120] NUC120学习之入门之第三贴 中断

[复制链接]
 楼主| 龙海风520 发表于 2011-10-23 10:06 | 显示全部楼层 |阅读模式
本帖最后由 缥缈九哥 于 2012-9-14 12:18 编辑

在论坛高手的教程下,自己试写了一下中断。


/*按下KEY2键流水灯开始,蜂鸣器叫*/
#include <stdio.h>
#include "NUC1xx.h"
#include "DrvGPIO.h"
#include "DrvSYS.h"
void delay_ms(uint32_t x)           //延时
{
uint32_t i,j;
for(i=800;i>0;i--)
  for(j=x;j>0;j--);
}
//外部中断0回调函数
void EINT0CALLBACK( void )
{
DrvGPIO_SetBit( E_GPB, 10);
}
int main( void )
{
UNLOCKREG(x);                 //芯片注册解锁
SYSCLK->;PWRCON.XTL12M_EN =1;             //设定12M外部晶振
LOCKREG(x);                  //芯片上锁
delay_ms(1000);                //等待时钟就绪
DrvGPIO_EnableInt( E_GPB, 14, E_IO_FALLING, E_MODE_EDGE);   //设置端口GPB14为外部中断模式   
    DrvGPIO_EnableDebounce(E_GPB, 14);
DrvGPIO_InitFunction( E_FUNC_EXTINT0);                    //指定外部中断0引脚功能
DrvGPIO_Open(E_GPB, 10, E_IO_OUTPUT);                         //设定端口GPB10为输出模式
DrvGPIO_ClrBit(E_GPB, 10);           //关闭蜂鸣器
DrvGPIO_EnableEINT0( E_IO_FALLING, E_MODE_EDGE, EINT0CALLBACK);
while(1)
{
  if(DrvGPIO_GetBit( E_GPB, 14) == 0)
   {
  DrvGPIO_ClrBit(E_GPA, 2);          //  LED1亮
  delay_ms(800) ;
  DrvGPIO_ClrBit(E_GPA, 3);          //  LED2亮
  DrvGPIO_SetBit(E_GPA,2) ;          //  LED1灭
  delay_ms(800) ;
  DrvGPIO_ClrBit(E_GPA, 4);          //  LED3亮
  DrvGPIO_SetBit(E_GPA,3) ;          //  LED2灭
  delay_ms(800) ;
  DrvGPIO_ClrBit(E_GPA, 5);          //  LED4亮
  DrvGPIO_SetBit(E_GPA,4) ;          //  LED3灭
  delay_ms(2000) ;
  DrvGPIO_SetBit(E_GPA,5) ;          //  LED4灭
     DrvGPIO_SetPortBits(E_GPA,0XFFC3);        //  全  亮
  delay_ms(2000) ;
  DrvGPIO_SetPortBits(E_GPA,0XFFFF)   ;       //  全  灭
  delay_ms(2000) ;
  DrvGPIO_SetBit(E_GPB,10) ;
  delay_ms(3000);
  DrvGPIO_ClrBit(E_GPB, 10);
  delay_ms(3000) ;         
    }
}
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
Ryanhsiung 发表于 2011-10-27 11:03 | 显示全部楼层
学习LZ,以 好好学习 天天向上 为生活口号
weshiluwei6 发表于 2011-10-27 11:24 | 显示全部楼层
可以更有条理些
 楼主| 龙海风520 发表于 2011-11-2 19:41 | 显示全部楼层
恩恩,才刚刚学了点,还请多多指点啊!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:好好学习 天天向上

0

主题

19

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部