历史上的今天

今天是:2024年09月16日(星期一)

2019年09月16日 | 中断-按键控制LED灯

发布者:WiseSage123 来源: eefocus关键字:中断  按键控制  LED灯 手机看文章 扫描二维码
随时随地手机看文章

三个按键分别控制三个LED灯

完整项目请去我的资源下载页xjp的资源

初始化函数:

/*

 * init.c: 进行一些初始化

 */ 

 

#include "s3c24xx.h"

 

/*

 * LED1,LED2,LED4对应GPF4、GPF5、GPF6

 */

#define GPF4_out (1<<(4*2)) //定义为01 输出

#define GPF5_out (1<<(5*2))

#define GPF6_out (1<<(6*2))

 

#define GPF4_msk (3<<(4*2)) //定义为11

#define GPF5_msk (3<<(5*2))

#define GPF6_msk (3<<(6*2))

 

/*

 * S2,S3,S4对应GPF0、GPF2、GPG3

  EINT0    EINT2 EINT11

 */

#define GPF0_eint     (0x2<<(0*2)) //10

#define GPF2_eint     (0x2<<(2*2))

#define GPG3_eint     (0x2<<(3*2)) //3*2:    2 代表一个节点站两位

 

#define GPF0_msk    (3<<(0*2)) //11

#define GPF2_msk    (3<<(2*2))

#define GPG3_msk    (3<<(3*2))

 

/*

 * 关闭WATCHDOG,否则CPU会不断重启

 *操作WTCON寄存器

 */

void disable_watch_dog(void)

{

   WTCON = 0;  // 关闭WATCHDOG很简单,往这个寄存器写0即可

}

 

void init_led(void)

{

    // LED1,LED2,LED4对应的3根引脚设为输出

   GPFCON &= ~(GPF0_msk|GPF2_msk|GPG3_msk);//先清零

   GPFCON |=(GPF4_out|GPF5_out|GPF6_out);//后置位

}

 

/*

 * 初始化GPIO引脚为外部中断

 * GPIO引脚用作外部中断时,默认为低电平触发、IRQ方式(不用设置INTMOD)

 */ 

void init_irq( )

{

    // S2,S3对应的2根引脚设为中断引脚 EINT0,ENT2

  GPFCON &= ~(GPF0_msk|GPF2_msk);//

  GPFCON |=    (GPF0_eint|GPF2_eint);

 

    // S4对应的引脚设为中断引脚EINT11

       GPGCON &= ~GPG3_msk;

GPGCON |= GPG3_eint;

    

    // 对于EINT11,需要在EINTMASK寄存器中使能它

    EINTMASK &= ~(1<<11);//【11】位清零

EINTMASK |=    (0<<11);//【11】位写零

//EINTMASK[11]中写零,等价于

//EINTMASK &= ~(1<<11);

        

    /*

     * 设定优先级:

     * ARB_SEL0 = 00b, ARB_MODE0 = 0: REQ1 > REQ3,即EINT0 > EINT2

     * 仲裁器1、6无需设置

     * 最终:

     * EINT0 > EINT2 > EINT11即K2 > K3 > K4

     * 在PRIORITY中设置

     */

 

 

     //PRIORITY 复位值为0x7f          0111 1111      

     // ARB_SEL0 = 00b,[8:7]=00      ARB_MODE0 = 0  [0]=0

    PRIORITY &= ~((3<<7)|(1<<0));

 

    

 

    // EINT0、EINT2、EINT8_23使能,在INTMSK中设置

     INTMSK   &= (~(1<<0)) & (~(1<<2)) & (~(1<<5));

}

 

 

 

中断函数

#include "s3c24xx.h"

 

void EINT_Handle()

{

    unsigned long oft = INTOFFSET;//读取中断偏移量

    unsigned long val;

    

    switch( oft )

    {

        // S2被按下,LED1点亮,再次按下,LED1熄灭

          case 0: //EINT0

        {   

            GPFDAT |= (0x7<<4);   // 所有LED熄灭

            GPFDAT &= ~(1<<4);      // LED1点亮

            break;

        }

        // S3被按下,LED2点亮,再次按下,LED2熄灭

         case 2://EINT2

        {   

            GPFDAT |= (0x7<<4);   // 所有LED熄灭

            GPFDAT &= ~(1<<5);      // LED2点亮

            break;

        }

        // K4被按下,LED3点亮,再次按下,LED3熄灭

          case 5://EINT11

        {   

            GPFDAT |= (0x7<<4);   // 所有LED熄灭

            GPFDAT &= ~(1<<6);      // LED4点亮                

            break;

        }

 

        default:

            break;

    }

 

    //清中断

    if( oft == 5 ) 

        EINTPEND = (1<<11);   // EINT8_23合用IRQ5

    SRCPND = 1<    INTPND = 1<    

}


关键字:中断  按键控制  LED灯 引用地址:中断-按键控制LED灯

上一篇:驱动-按键-中断模式
下一篇:Keil(MDK-ARM)系列教程(一)_新建软件工程详细过程

推荐阅读

提到马斯克,大家首先想到的一般是特斯拉,但马斯克旗下还有一个更大胆更又创意的公司——Space X。很早之前SpaceX就提到载游客去太空旅行的目标。而这这一目标或将在今年成为现实。对于SpaceX来说,他们即将开启载人航天发射业务,现在官方宣布签下全球首位绕月飞行私人乘客。消息一出引来全球网友的关注,毕竟这个项目太疯狂了。SpaceX在官方推特上表示...
专注于引入新品的全球电子元器件授权分销商贸泽电子 (Mouser Electronics) 即日起备货Texas Instruments (TI) 的OPA855非完全补偿放大器。该款双极性输入的宽带低噪声运算放大器非常适合配置为高带宽跨阻放大器和电压放大器,其8GHz增益带宽积 (GBWP) 可以在维持较高闭环带宽的前提下实现高增益配置。不仅如此,OPA855的输入噪声仅为0.98nV/√Hz,能够尽...
初始化ADC1:void Init_ADC(void){GPIO_Init(GPIOD, (GPIO_Pin_TypeDef)(GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_5|GPIO_PIN_6), GPIO_MODE_IN_FL_NO_IT);ADC1_DeInit();ADC1_Cmd(ENABLE);ADC1_Init(ADC1_CONVERSIONMODE_CONTINUOUS, ADC1_CHANNEL_3, ADC1_PRESSEL_FCPU_D18, ADC1_EXTTRIG_TIM, DISABLE, ADC1_ALIGN_RIGHT, ADC1_SCHMITTTRIG_CHANNEL3,D...
大联大诠鼎集团推出基于NOVATEK产品的高清监控录影DVR方案2021年9月16日,致力于亚太地区市场的领先半导体元器件分销商---大联大控股宣布,其旗下诠鼎推出基于联咏科技(NOVATEK)NT98323的监控录影DVR解决方案。 图示1-大联大诠鼎推出基于NOVATEK产品的监控录影DVR方案的展示板图在这个信息科技时代,人们早已习惯应用监控系统来随时随地了解各地的状况。...

史海拾趣

问答坊 | AI 解惑

到底如何上手学ARM(

老手讲心得,新手讲迷惑 每个人都经历过初学阶段,有些很顺利,有些则很曲折,有些甚至还在徘徊!更有一些感叹!那就都在这说出来吧,说说自己的经历,自己难忘的经历!当作是一种回味,也给后来人一些经验和教训!   新手也要抓紧时间,有 ...…

查看全部问答∨

Quartus 和Modesim中初始文件相互转换

.mif和.hex文件都是Quartus支持的数据文件格式,常被用作内存初始化文件。可是,M odelSim却不支持.mif文件,只支持.hex文件格式,这意味着如果你的设计采用了.mif文件 ,你的设计将无法在ModelSim中进行仿真。所以,我们需要用Quartus打开. ...…

查看全部问答∨

关于SCA60C倾角传感器

我的倾角传感器输出电压很奇怪,按照道理说平放是输出电压是2.5V,但是现在是一会儿是3.9V左右,一会儿又降到1.4V。有的时候也能在2.5V左右晃动,我估计是坏掉了。但我换了一块以后那个的输出电压直接就变成了0V。现在手头就2个传感器,没有办法了 ...…

查看全部问答∨

规划未来2年的路线:开发20款ARM/MIPS开发板,请大家帮忙芯片选型和推荐!

目前已经成功开发了 S3C44B0X、S3C2410、S3C2440、AT91SAM9260、AT91SAM9261、AT91SAM9263、JZ4755。 接着打算做 PXA270(目前市场上还有不少270芯片,可以低价购买) PXA310(这个暂时还犹豫不决,还没找到合适的SDK) S3C2416(资料丰富,批量价 ...…

查看全部问答∨

HPI驱动

我正在写一个HPI的驱动,实现arm和dsp之间的通信,可吧程序拿来交叉编译的时候有个报错,实在看不明白,请各位高手给点拨点拨。谢谢了! 输入命令:[root@vm-mandel work]# arm-linux-gcc -O -c  HPIdriver.c 得到如下报错信息: HPId ...…

查看全部问答∨

在IAR中三星单片机的问题

我用的是IAR软件,用C编写程序,在做三星单片机的时候(S3C9454)时,发现一个问题,S3C9454里面的SMART OPTION(3CH,3DH,3EH,3FH)不知道该如何初始化,有朋友会的请帮帮忙吧,谢谢!…

查看全部问答∨

正弦波,三角波。锯齿波的产生?

如何利用FPGA能产生正弦波,三角波。锯齿波,但是不能用DAC芯片。望各位高手指教。。…

查看全部问答∨

问个关于中断的问题

T1中断,执行中断程序,中断程序中关闭总中断,执行完中断程序后开总中断。 请问,T1在执行中断程序中,T0中断,会等到T1执行完中断程序后执行,还是直接被忽略。…

查看全部问答∨

求购一个100G左右的SATA移动硬盘

本帖最后由 ddllxxrr 于 2016-1-7 17:00 编辑 RT. 笔记本的坏了,新的太贵。买个旧的来用着先。联系QQ523335234 注明硬盘 …

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved