<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      JZ2440開發板:用按鍵點亮LED燈(學習筆記)

      本文是對韋東山嵌入式第一期學習的記錄之一,如有您需要查找的信息,可以繼續往下閱讀。

       

        想要用按鍵點亮LED燈,就需要知道按鍵和LED燈的相關信息,這樣才可以進行之后的操作。閱讀JZ2440的原理圖,可以得到以下信息(見下方圖片)



       

      JZ2440開發板用到了S2,S3,S4三個按鍵,nLED1,nLED2,nLED4三盞LED燈,它們對應的寄存器位分別是:

      按鍵:S2(EINT0)——GPF0  S3(EINT2)——GPF2  S4(EINT11)——GPG3

      LED:  nLED1——GPF4  nLED2——GPF5  nLED4——GPF6

      知道這些之后,需要進一步了解相應寄存器的信息,閱讀S3C2440的芯片手冊,可以得到以下信息(見下方圖片)

                            GPFCON和GPFDAT寄存器

                            GPGCON和GPGDAT寄存器

      對于LED:需要設置GPFCON的GPF4/5/6,讓它們變成輸出引腳【GPFCON的bit8/9設為0b01,bit10/11設為0b01,bit12/13設為0b01】

      對于按鍵:需要設置GPFCONGPF0(s2鍵),GPF2(s3鍵)以及GPGCONGPG3(s4鍵),讓它們變成輸入引腳【GPFCON的bit0/1設為0,bit4/5設為0,GPGCON的bit6/7設為0】

        由于GPFCON與GPFDAT是對應的,GPGCON與GPGDAT是對應的,根據芯片手冊關于GPFDAT和GPGDAT的描述(上面的圖片)可知:

      當端口配置為輸入時,相應的位為針狀態。當端口配置為輸出時,引腳狀態為與相應的位相同。 當端口配置為功能引腳時,將讀取未定義的值。

      由此可以知道:

        按鍵的狀態對應GPFDAT中位0和位2的值以及GPGDAT中位3的值LED的狀態對應GPFAT中位6/5/4的值

        按鍵和LED一樣,平時電位都處于拉高狀態,對應著松開和熄滅(也就是1),當按鍵按下時,或者LED點亮時,對應著低電位(也就是0)

      因此,GPFDAT寄存器和GPGDAT寄存器也需要進行相關的設置(程序中體現)。

        接下來僅對C程序進行解析:

       1 #include "s3c2440_soc.h"                         //寫好了寄存器地址的宏,C程序中直接寫寄存器名稱即可
       2 int main(void)
       3 {
       4     int val1,val2;
       5     /*設置GPFCON的GPF4/5/6,讓它們變成輸出引腳*/
       6     GPFCON &=~((3<<8)|(3<<10)|(3<<12));                        //先讓GPFCON的GPF4/5/6清零
       7     GPFCON |=((1<<8)|(1<<10)|(1<<12));                        //配置好GPFCON的GPF4/5/6,讓它們變成輸出引腳
       8 
       9     /*設置GPFCON的GPF0(s2鍵),GPF2(s3鍵)以及GPGCON的GPG3(s4鍵),讓它們變成輸入引腳*/
      10     GPFCON &=~((3<<0)|(3<<4));
      11     GPGCON &=~(3<<6);
      12 
      13     /*按下點亮*/
      14     while(1)
      15     {
      16         val1=GPFDAT;
      17         val2=GPGDAT;
      18         if(val1 & (1<<0))                        //判斷S2鍵是否按下,對應GPF6的LED燈
      19             {
      20                 GPFDAT |=(1<<6);                //此時S2鍵為松開,LED應該熄滅
      21             }
      22         else
      23             {
      24                 GPFDAT &=~(1<<6);                //此時S2鍵為按下,LED應該點亮
      25             }
      26         if(val1 & (1<<2))                        //判斷S3鍵是否按下,對應GPF5的LED燈
      27             {
      28                 GPFDAT |=(1<<5);                //此時S3鍵為松開,LED應該熄滅
      29             }
      30         else
      31             {
      32                 GPFDAT &=~(1<<5);                //此時S3鍵為按下,LED應該點亮
      33             }
      34         if(val2 & (1<<3))                        //判斷S4鍵是否按下,對應GPF4的LED燈
      35             {
      36                 GPFDAT |=(1<<4);                //此時S4鍵為松開,LED應該熄滅
      37             }
      38         else
      39             {
      40                 GPFDAT &=~(1<<4);                //此時S4鍵為按下,LED應該點亮
      41             }
      42     }
      43     return 0;
      44 }

        整個C程序到此就寫完了,連同其他文件(start.S / s3c2440_soc.h / makefile 本文沒有附上)一起上傳到linux編譯后,得到的bin文件,燒寫到JZ2440開發板上,經過驗證,按鍵按下時,對應的LED亮,松開時熄滅。

      posted @ 2018-10-18 07:48  知微之見  閱讀(2115)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲综合网国产精品一区| 无码人妻丰满熟妇啪啪| 午夜福利国产盗摄久久性| 免费超爽大片黄| 亚洲自拍偷拍中文字幕色| 国产成人一区二区三区免费| 天堂中文8资源在线8| а∨天堂一区中文字幕| 不卡高清AV手机在线观看| 欧美片内射欧美美美妇| 999福利激情视频| 深夜福利啪啪片| 久久久亚洲欧洲日产国码二区| 一区二区三区四区黄色片| 日韩精品亚洲专在线电影| 日韩欧美不卡一卡二卡3卡四卡2021免费 | 97精品亚成在人线免视频| 18禁视频一区二区三区| 99精品国产成人一区二区| 亚洲无人区码一二三四区| 精品人妻中文字幕av| 四虎国产精品永久在线| 亚洲国产精品综合久久20| 最新亚洲国产手机在线| 东京热人妻无码人av| 欧美一区内射最近更新| 久久国产精品老人性| 亚洲成在人网站av天堂| 自偷自拍亚洲综合精品| 国产精品一区二区AV| 精品无码国产污污污免费| 久久亚洲中文字幕不卡一二区| 久久热在线视频精品视频| 免费现黄频在线观看国产| 国产AV午夜精品一区二区三区| 精品无码一区二区三区电影| 欧美一本大道香蕉综合视频| 午夜福利片1000无码免费| 亚洲国产精品线观看不卡| 欧美精品亚洲精品日韩专| 亚洲岛国成人免费av|