您的位置 首页 编程

s3c2440外部中止

上文用到了pwm控制蜂鸣器,实现了蜂鸣器频率的改变,有一点不好就是蜂鸣器一直响,可以用一个交互的方式来关闭蜂鸣器。这里就选择…

上文用到了pwm操控蜂鸣器,完成了蜂鸣器频率的改动,有一点欠好便是蜂鸣器一向响,可以用一个交互的方法来封闭蜂鸣器。这儿就挑选按键,开发板上总共4个按键,对应这4个外部中止EINT0,EINT1,EINT2和EINT4(为什么不是EINT0~3呢,让人蛋疼)

要运用外部中止,首先要初始化外部中止。外部中止跟外部引脚F和G复用。要把相应的引脚装备为中止形式:

装备完引脚后,还需要装备详细的中止功用。咱们要翻开某一中止的屏蔽,这样才干响应该中止,相对应的寄存器为INTMSK有些位对应着多个外部中止;

我们存在位对应着多个外部中止,如上图EINT4~7EINT8~23对应INTMSK一个屏蔽位,所以要准确翻开某一个外部中止就要装备EINTMASK。下图只列出了一部分,关于EINT4~23都适用。

外部中止也要有一个触发的方法,挑选低电平、高电平、上升沿、下降沿触发等方法,这个要装备EXTINT寄存器

如前面博文gun-ucos的s3c2440处理器中止部分所述,由于中止来的时分硬件会把SRCPND和INTPND置1,所以需要把相应的位清零(经过置1来清零),关于外部中止还要判别详细是哪个外部中止,这就要看EINTPEND寄存器了。这个寄存器相同也要经过置1来清零。

下面给出段代码,当系统启动后开端蜂鸣,假如按下key2 那么设置GPB0位输出形式,而且输出低电平,蜂鸣器中止!

void init_key(void){rGPFCON	&= ~0x33f;rGPFCON	|= 0x22a;rINTMSK &= ~( (1<<0)|(1<<1)|(1<<2)|(1<<4));		/// enable eintrEINTMASK	&= ~(1<<4);				/// enable eint4rEXTINT0	&= ~0x70777;rEXTINT0	|= 0x20222;pIRQ_EINT0	= (uint32)key_int0;pIRQ_EINT1	= (uint32)key_int1;pIRQ_EINT2	= (uint32)key_int3;pIRQ_EINT4_7	= (uint32)eint4_7;}

其间 key_int 0 1 3都是空函数(这儿的对应联系没验证,比如按开发板上的K1不一定碑文到key_int1函数)。

按键2由eint4_7处理,在这个函数晒干铲除 rEINTPEND,封闭蜂鸣器:

void eint4_7(void){UINT32 eintpnd;UINT8	index;eintpnd	= rEINTPEND;for(index = 4;index < 24;index ++){if(eintpnd & (1<

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/fangan/biancheng/265543.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部