<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > OK6410按鍵中斷點(diǎn)亮lED

          OK6410按鍵中斷點(diǎn)亮lED

          作者: 時(shí)間:2016-11-21 來源:網(wǎng)絡(luò) 收藏
          首先理清楚要準(zhǔn)備的幾個(gè)方面
          1.LED初始化
          2.按鍵初始化
          3.中斷初始化
          4.中斷處理程序
          首先初始化LED,以前說過了,不說
          按鍵初始化,這里既然要用到中斷,就不用傳統(tǒng)的延時(shí)消抖的辦法了,直接用中斷。
          只要把對應(yīng)的位設(shè)置成10,就是外部中斷了
          這里用XEINT0和XEINT5,有理由的,為什么選這兩個(gè)后面會(huì)說
          void button_init()
          {
          *(GPNCON)=0x802; //配置按鍵位外部中斷
          }
          接下來中斷初始化,一下說的比較清楚了,寄存器的名字直接在s3c6410里面查找就可以了,為什么選XEINT0和XEINT5的原因在注釋最長的那一行里面
          void init_irq()
          {
          //配置按鍵中斷下降沿觸發(fā)
          *(EINT0CON0)=0b010;
          //取消中斷屏蔽
          *(EINT0MASK)=0x0;
          //打開中斷
          *(VIC0INTENABLE)=0x3;
          *(VIC0VECTADDR0)=(int)k1_isr; //把中斷處理程序的地址寫入中斷向量表
          *(VIC0VECTADDR1)=(int)k2_isr; //注意external interrupt0和external interrupt1屬于同一個(gè)VIC0,使用同一個(gè)中斷向量地址,所以這里用XEINT1和XEINT5
          //設(shè)置cpsr寄存器使用向量方式中斷,打開總中斷
          __asm__(
          "mrc p15,0,r0,c1,c0,0n" //使用中斷向量表
          "orr r0,r0,#(1<<24)n"
          "mcr p15,0,r0,c1,c0,0n"
          "mrs r0,cpsrn"
          "bic r0, r0, #0x80n" //cpsr第7位清零,取消中斷不使能
          "msr cpsr_c, r0n"
          :
          :
          );
          }
          中斷處理程序
          void k1_isr()
          {
          //保存環(huán)境
          __asm__(
          "sub lr, lr, #4n"
          "stmfd sp!, {r0-r12, lr}n"
          :
          :
          );
          //中斷處理
          led_off();
          //清除中斷
          EXT_INT_0_PEND = ~0x0; //清除標(biāo)記 pend是中斷標(biāo)志位
          VIC0ADDRESS = 0; //把向量地址清零,方便下次用向量方式處理中斷
          VIC1ADDRESS = 0; //
          //恢復(fù)環(huán)境
          __asm__(
          "ldmfd sp!, {r0-r12, pc}^ n"
          :
          :
          );
          }
          OK6410里面我感覺中斷有一點(diǎn)比較特殊,就是可以采用向量方式處理中斷,這里就需要知道,先來個(gè)表格





          就是這個(gè),這里可以看到,external interrupt0到external interrupt3共同屬于VIC0組,這樣它在使用向量方式時(shí)就會(huì)共用向量地址,所以在同時(shí)用external interrupt0和external interrupt1時(shí)就會(huì)出現(xiàn)external interrupt1的按鍵沒有用,就是因?yàn)橄蛄康刂繁籩xternal interrupt0占用了,所以我用了external interrupt0和external interrupt5,external interrupt5屬于VIC1,向量地址在external interrupt0的向量地址的基礎(chǔ)上加4。
          This time can be OK


          評論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();