<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > TQ2440之按鍵中斷

TQ2440之按鍵中斷

作者: 時(shí)間:2016-11-21 來(lái)源:網(wǎng)絡(luò ) 收藏
這次是按鍵中斷,首先呢,中斷初始化方面確實(shí)比較麻煩。我自己設計的裸機程序是TQ板子上四個(gè)按鍵,當按鍵按下時(shí)觸發(fā)一次中斷,并且LED燈對應的就會(huì )亮,這里要贊一下TQ的板子,按鍵4用的是子中斷,當時(shí)我調程序的時(shí)候發(fā)現每次只要我按下按鍵4就陷入死循環(huán)出不來(lái)了,后來(lái)文彬指點(diǎn)了一句會(huì )不會(huì )是子中斷的問(wèn)題一出口我就知道問(wèn)題出在哪了,其實(shí)他是知道的,故意讓我糾結一下,還好沒(méi)讓我糾結那么久。程序是我自己編的,有一開(kāi)始自己寫(xiě)的有點(diǎn)亂然后后邊整理了一下并且參考了別人編程的風(fēng)格習慣所以就形成了我下面給出的程序,有在板子上運行處成功,關(guān)于一些頭文件跟c文件就不說(shuō)了,真正有心在做裸機的知道解決方法。
#include "2440addr.h"
#include"option.h"
#define LED1_ON (rGPBDAT &= ~(1<<5) ) //置0燈亮,置1燈滅
#define LED1_OFF (rGPBDAT |=(1<<5) )
#define LED2_ON (rGPBDAT &= ~(1<<6) )
#define LED2_OFF (rGPBDAT |=(1<<6) )
#define LED3_ON (rGPBDAT &= ~(1<<7) )
#define LED3_OFF (rGPBDAT |=(1<<7) )
#define LED4_ON (rGPBDAT &= ~(1<<8) )
#define LED4_OFF (rGPBDAT |=(1<<8) )
void delay(void)
{
unsigned int i,j;
for(i=0;i<1000;i++)
for(j=0;j<6000;j++)//純粹是為了燈亮的好看不會(huì )閃爍;
;
}
void __irq Key1_ISR(void)//提前定義,不然下邊的pISR_EINT那里會(huì )報錯,原因c語(yǔ)言檢測不到函數定義
{
rSRCPND |= (1<<1);//清除中斷標志位,下面相同
rINTPND |= (1<<1);
LED1_ON;
delay();
LED1_OFF;
}
void __irq Key2_ISR(void)
{
rSRCPND |= (1<<4);
rINTPND |= (1<<4);
rEINTPEND |= (1<<4);//使能EINT4,因為它是復用的,所以要加上這句
rEINTMASK &= (~(1<<4));//中斷屏蔽
LED2_ON;
delay();
LED2_OFF;
}
void __irq Key3_ISR(void)
{
rSRCPND |= (1<<2);
rINTPND |= (1<<2);
LED3_ON;
delay();
LED3_OFF;
}
void __irq Key4_ISR(void)
{
rSRCPND |= (1<<0);
rINTPND |= (1<<0);
LED4_ON;
delay();
LED4_OFF;
}
void led_init(void)//初始化燈
{
rGPBCON = 0x15400;//全部設置為I/O輸出
rGPBUP = 0x00;//使能上拉電阻
rGPBDAT |= (1<<5)|(1<<6)|(1<<7)|(1<<8);//先讓燈全滅,不然看不到效果
}
void key_init(void)//初始化中斷
{
rGPFCON |= (1<<1)|(1<<3)|(1<<5)|(1<<9); //設置寄存器為中斷方式
rEXTINT0 |= (1<<1)|(1<<5)|(1<<9)|(1<<17);//設置外部中斷為下降沿方式觸發(fā)
rEINTMASK &= (~(1<<4));//EINT4中斷有效
rEINTPEND |= (1<<4);//寫(xiě)1清除EINT4中斷標志位
rSRCPND |= (1<<0)|(1<<1)|(1<<2)|(1<<4);//EINT0、1、2、4等待請求服務(wù)
rINTMSK &= (~(1<<0))&(~(1<<1))&(~(1<<2))&(~(1<<4));//設置cpu服務(wù)EINT0、1、2、4
rINTPND |= (1<<0)|(1<<1)|(1<<2)|(1<<4);//優(yōu)先級的問(wèn)題,IRQ決定服務(wù)哪個(gè)哪個(gè)中斷源先
pISR_EINT0 = (unsigned)Key4_ISR;
pISR_EINT1 = (unsigned)Key1_ISR;
pISR_EINT2 = (unsigned)Key3_ISR;
pISR_EINT4_7 = (unsigned)Key2_ISR;//就是這里啦,報unsigned錯誤讓我調了好幾天的地方,這里是設置中斷服務(wù)子程序地址
}
void Main(void)
{
MMU_Init();
led_init();//初始化燈
key_init();//初始化中斷
while(1);//死循環(huán),等待按鍵中斷
}
最近比較懶,好久沒(méi)開(kāi)博客看看了,下次再把串口裸機程序發(fā)上來(lái),做好了,可是懶得寫(xiě)。最近要復習期末考,做到nand flash的操作裸機程序就暫且放一放,等考完試后再把它完成之后就正式進(jìn)入驅動(dòng)的學(xué)習,同時(shí)可能會(huì )學(xué)習一下UC/OS ii。


關(guān)鍵詞: TQ2440按鍵中

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>