打印
[菜农助学交流]

第三批学习第二贴,中断的使用(落后了好多。。)

[复制链接]
1742|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
batloveshan|  楼主 | 2011-11-24 11:15 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
gp, IO, pi, GPIO, ck
最近,心态不佳,没什么心思搞这个。。因为,大四一开始都在找工作。。而目前签的这家在省外,去做电梯电气(感觉有很大的行业局限性,将来想往其他方面电力电器开关行业转不知道容不容易)。不知道当时怎么就签了。。以为来保底的,结果才发现没有必要签所谓的保底,后面有些单位也挺不错的。。现在又因为待遇跟留在省内一样,心里有点郁闷,还不如当时不签。。现在想毁约,可是又没有看到更合适的。。哎,大学四年,其实学得挺杂的,又没有什么很强烈的爱好,感觉做什么都可以,就不太想跑那么远了。。现在的心情好矛盾啊。。求指点迷津啊。
      这篇笔记是参考论坛上各位高手的一些程序,稍微理解了中断的使用,感觉还真的把cortex m0当作单片机来用了(说实话,我都不知道单片机自己算不算是入门了,感觉程序写起来也不是很利索)。。
      下面是程序,KEY1跟KE2都用中断功能。一个中断调用流水灯,一个驱动蜂鸣器。。
      #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--);
      }

  void Init(void)      //初始化
  {
       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_EnableInt( E_GPB, 15, E_IO_FALLING, E_MODE_EDGE);     //设置端口GPB14为外部中断模式   
      DrvGPIO_EnableDebounce(E_GPB, 15);
      DrvGPIO_InitFunction( E_FUNC_EXTINT0);                        //指定外部中断0引脚功能
     DrvGPIO_Open(E_GPB, 10, E_IO_OUTPUT);                         //GPB10为输出模式
     DrvGPIO_ClrBit(E_GPB, 10);                 //关闭蜂鸣器
    }

       void EINT0Callbck( void )
     {
       DrvGPIO_SetBit( E_GPB, 10);  // 蜂鸣器响
     }               

      void EINT1Callbck( void )
    {
           do{
                   DrvGPIO_ClrBit(E_GPA,2);
                   Delay_ms(1000);
                   DrvGPIO_SetBit(E_GPA,2);
                   Delay_ms(1000);
                   DrvGPIO_ClrBit(E_GPA,3);
                   Delay_ms(1000);
                   DrvGPIO_SetBit(E_GPA,3);
                   Delay_ms(1000);
                   DrvGPIO_ClrBit(E_GPA,4);
                   Delay_ms(1000);
                   DrvGPIO_SetBit(E_GPA,4);
                   Delay_ms(1000);
                   DrvGPIO_ClrBit(E_GPA,5);
                   Delay_ms(1000);
                   DrvGPIO_SetBit(E_GPA,5);
                   Delay_ms(1000);
                    while(1)  ;
                  }
              }

                main(void)
        {
                    UNLOCKREG(x);                 //芯片注册解锁
                   SYSCLK->PWRCON.XTL12M_EN =1;  //设定12M外部晶振
                     LOCKREG(x);                   //芯片上锁
                    Init();
                    DrvGPIO_EnableEINT0( E_IO_FALLING, E_MODE_EDGE, EINT0Callbck);  
                    DrvGPIO_EnableEINT1( E_IO_FALLING,
E_MODE_EDGE, EINT1Callbck);
                  while(1)
                      {
                           if(DrvGPIO_GetBit( E_GPB, 14) == 0)
                               {
                                      EINT0Callbck();
                                }
                          if(DrvGPIO_GetBit( E_GPB, 15) == 0)
                               {
                                EINT1Callbck();
                                  }
                          }
                   }

相关帖子

沙发
hotpower| | 2011-11-24 19:16 | 只看该作者
不抛弃不放弃,鼓励一下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:鸵鸟的幸福只是一堆沙子。。。。

0

主题

379

帖子

1

粉丝