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

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 第一個裸奔程序——跑馬燈

          第一個裸奔程序——跑馬燈

          作者: 時間:2016-11-19 來源:網(wǎng)絡(luò) 收藏
          經(jīng)過前段時間的準備,現(xiàn)在終于開始正式寫ARM程序了。本著先易后難的原則,先寫無操作系統(tǒng)的ARM裸奔程序,以便熟悉s3c2440的內(nèi)部結(jié)構(gòu),此后再編寫有操作系統(tǒng)的程序。
          第一個程序就從最最簡單的點亮開發(fā)板上的四個LED開始,使這四個并排擺放的LED從一端向另一端依次被點亮,從而呈現(xiàn)出跑馬燈的效果。四個LED連接到了B口的5到8引腳,輸出低電平時被點亮,下面就是程序代碼:

          //定義三個寄存器
          #define rGPBCON(*(volatile unsigned *)0x56000010)//Port B control
          #define rGPBDAT(*(volatile unsigned *)0x56000014)//Port B data
          #define rGPBUP(*(volatile unsigned *)0x56000018)//Pull-up control B

          void delay(int);//延時函數(shù)

          void Main(void)
          {
          int light;
          int i;
          rGPBCON = 0x015550;//定義PB5~PB8為輸出
          rGPBUP= 0x7ff;//使PB上拉功能失效
          light = 0x10;
          light = light<<1;
          rGPBDAT = ~light;//第一個LED被點亮
          delay(500000);//延時一段時間
          //主程序死循環(huán)
          while(1)
          {
          //從一端向另一端
          for (i=0;i<3;i++)
          {
          light = light<<1;
          rGPBDAT = ~light;
          delay(500000);
          }
          //返回
          for (i=0;i<3;i++)
          {
          light = light>>1;
          rGPBDAT = ~light;
          delay(500000);
          }
          }
          }
          //延時函數(shù)
          void delay(int a)
          {
          int k;
          for(k=0;k;
          }


          程序很簡單,其中Main函數(shù)是在2440啟動代碼執(zhí)行完后開始被執(zhí)行。由于該程序沒有用到MMU_SetAsyncBusMode、MMU_SetFastBusMode和RdNF2SDRAM,所以為了正確編譯該程序,只需把啟動代碼中相關(guān)的地方注釋掉即可。

          在這里,把ADS的相關(guān)配置介紹一下,這些內(nèi)容是比較重要的。下面是需要修改的內(nèi)容:
          在Target Settings中的Post-linker中選擇ARM fromELF,因為我們需要把ELF文件格式轉(zhuǎn)化為下載到flash中所必須的二進制文件。
          在Language Settings中的所有語言的Target下的Architecture or Processor,選擇ARM920T,因為s3c2440是ARM920T內(nèi)核。
          在ARM Linker中的Output中的RO Base填寫0x30000000,因為在開發(fā)板上SDRAM是從0x30000000地址開始。在Layout中的Object/Symbol中填寫2440init.o,它是啟動文件的目標文件,在Section中填寫Init,它是在啟動文件中我們所定義的入口代碼段的名稱。
          在ARM fromELF中的Output format選擇Plain binary,并在Output file name中填寫任意以bin為后綴的輸出文件名。


          關(guān)鍵詞: 裸奔程序跑馬

          評論


          技術(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); })();