日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OK6410裸机开发之LED灯

發布時間:2025/6/15 编程问答 16 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OK6410裸机开发之LED灯 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

平臺:WinXP+eclipse+OpenJTAG

開發板:OK6410A?128M?DDR?1G?NandFlash

---------------------------------------------------------

PS:CSDN的貼圖功能太不人性化了,感覺好麻煩!

這段時間一直在翻看OK6410裸機開發的教程,現在準備自己動手寫一寫,并記錄下來調試過程和遇到的問題。

這一節是關于LED燈的操作,比較簡單,如同51單片機上開發流水燈一樣簡單。

1、建立工程

首先,我們建立一個項目,打開eclipsefile——>new——>C?Project,項目名稱寫入OK6410_LED,點擊下一步。


然后點擊Finish,我們就可以在左側的項目資源管理器中看見我們剛建立的工程了。

2、添加源代碼

建立好工程后,我們添加源代碼。一共有3個文件:start.Sled.cMakefile

右鍵項目名稱——>new——>file,寫入start.S(下同)。

先來寫start.S,因為我們要通過start.S來跳入我們c函數的入口處

[plain]?view plaincopy
  • .globl?_start??
  • _start:??
  • ??????????????????????????????????????????????????????
  • ????/*?Peri?port?setup?*/??
  • ????ldr?r0,?=0x70000000??
  • ????orr?r0,?r0,?#0x13??
  • ????mcr?p15,0,r0,c15,c2,4???????@?256M(0x70000000-0x7fffffff)??
  • ??????????????????????????????????????????????????????
  • ????/*?Disable?Watchdog?*/??
  • ????ldr?r0,?=0x7E004000?????????@看門狗寄存器地址為0x7E004000??
  • ????mov?r1,?#0??
  • ????str?r1,?[r0]????????????????@往看門狗寄存器寫入0,關閉看門狗,否則板子會不斷重啟??
  • ??????????????????????????????????????????????????????
  • ????/*?設置棧?*/??
  • ????ldr?sp,?=8*1024?????????????@此時棧大小不能大于8K,因為現在可用的內存只有8K??????????????????????????????????????????????????????????@NAND?Flash中的代碼在復位后會移到SRAM中,而SRAM只有8K大小??
  • ??????????????????????????????????????????????????????
  • ????bl?main?????????????????????@跳入C程序的main函數處執行??
  • halt:??
  • ????b?halt??


  • 接下來寫Led.c

    首先我們看一下OK6410開發板的原理圖,發現LED1-4燈分別對應GPM0-3,找到控制LED燈的引腳,那么我們就可以寫程序來控制它們了。

    ?

    打開6410手冊,找到GPM的相關寄存器,如下圖:

    我們先來看配置寄存器,既然要控制LED燈的亮滅,那么就得把GPM0-3設為輸出。

    即:rGPMCON?=?0x1111;

    接下來看上拉/下拉設置寄存器,根據原理圖,我們不需要設置上拉、下拉,所以設置為禁止上/下拉。

    即:rGPMPUD?=?0x00;

    最后就是用高低電平來控制LED亮滅了。

    rGPMDAT?=?0x1F;//4LED燈都亮

    下面是led.c的完整代碼:

    [cpp]?view plaincopy
  • /**************************************************************************************?
  • *?
  • *???File?Name?:?Led.c?
  • *?
  • *???File?Description?:?OK6410流水燈.?
  • *?
  • *???Author?:?踏雪059?
  • *???Dept.?:?HackSnow?
  • *???Created?Date?:?2013/1/15?
  • *???Version?:?1.0?
  • *?
  • **************************************************************************************/??
  • ????????????????????????????????????????
  • ????????????????????????????????????????
  • #define?rGPMCON??????????(*(volatile?unsigned?*)(0x7F008820))??
  • #define?rGPMDAT??????????(*(volatile?unsigned?*)(0x7F008824))??
  • #define?rGPMPUD??????????(*(volatile?unsigned?*)(0x7F008828))??
  • ????????????????????????????????????????
  • ????????????????????????????????????????
  • ????????????????????????????????????????
  • void?msDelay(int?time)??
  • {??
  • ????????volatile?unsigned?int?i,j;??
  • ????????for(i?=?0;?i?<?2000000;?i++)??
  • ????????????for(j=0;?j<time;?j++);??
  • }??
  • ????????????????????????????????????????
  • ????????????????????????????????????????
  • void?GPIO_Init(void)??
  • {??
  • ????rGPMCON??=?0x11111;??
  • ????rGPMPUD??=?0x00;??
  • ????rGPMDAT??=?0X1F;??
  • }??
  • ????????????????????????????????????????
  • void?LedTest(void)??
  • {??
  • ????volatile?unsigned?int?i;??
  • ????while?(1)??
  • ????{??
  • ????????for(i=0;?i<4;?i++)??
  • ????????{??
  • ????????????rGPMDAT??=?~(1<<i);??
  • ????????????msDelay(10);??
  • ????????}??
  • ????????????????????????????????????????
  • ????}??
  • }??
  • int?main(void)??
  • {??
  • ????GPIO_Init();??
  • ????LedTest();??
  • ????return?0;??
  • }??


  • 最后我們來搞定Makefile文件:

    [cpp]?view plaincopy
  • all:led.bin??
  • led.bin:?start.o?led.o??
  • ????arm-elf-ld?-Ttext?0?-o?led.elf?start.o?led.o??
  • ????arm-elf-objcopy?-O?binary?led.elf?led.bin??
  • ????arm-elf-objdump?-D?led.elf?>?led.dis????
  • ?????????????????????????????????????????
  • start.o?:?start.S??
  • ????arm-elf-gcc?-g?-o?start.o?start.S?-c????
  • ?????????????????????????????????????????
  • led.o?:?led.c??
  • ????arm-elf-gcc?-g?-o?led.o?led.c?-c????
  • ?????????????????????????????????????????
  • clean:??
  • ????rm?*.o?led.elf?led.bin?led.dis??


  • 注意:在arm-elf-gcc后面一定要記得帶上-g參數,不然我們無法進行調試的。還有就是最好不要在編譯代碼是添加優化選項,即-O參數,優化以后,反匯編代碼和源代碼就不對應了,對于調試來說是個麻煩。

    3、編譯程序

    下面我們來進行編譯,右鍵項目名稱,點擊Build?Project,完成后如下圖,在左邊會多出幾個文件。


    4、調試程序

    點擊Debug調試按鈕,彈出對話框,按圖片上的步驟操作,在Main標簽中的C/C++?Application中填入生成的elf文件的存放路徑。

    點擊Debugger標簽,在GDB?common?file中填入6410初始化文件s3c6410_gdb.init,這個文件網上應該可以搜到。

    接著在command標簽中填入

    load

    break?main

    c

    然后我們打開OpenJTAG?GUI,連接開發板。

    一切OK后,我們點擊Debug按鈕,就可以進行源碼調試了。

    貼圖貼的我好累,好多都是一些eclipse的使用,后面的章節就不貼這部分的圖了。

    總結

    以上是生活随笔為你收集整理的OK6410裸机开发之LED灯的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 波多野结衣喷潮 | 在线免费av观看 | www.成人.com| 久久国产劲爆∧v内射 | 欧美日韩中文在线视频 | 污污污污污污www网站免费 | 小sao货水好多真紧h无码视频 | 伊人青青久久 | www天天操| 91综合国产 | 精品一区二区亚洲 | 国产成人综合在线视频 | 非洲黄色大片 | 一区二区三区日韩欧美 | 国产91视频播放 | 成人福利在线看 | 精品日韩在线播放 | 性色视频| 亚洲日本片 | 环太平洋3:泰坦崛起 | 拔插拔插海外华人永久免费 | 色视频2 | 亚洲av成人无码久久精品老人 | 中文字幕中文在线 | 日b视频免费观看 | 特级大胆西西4444人体 | 国产精品久久久国产盗摄 | 一区二区三区日韩欧美 | 97午夜| 草草久久久 | 精品亚洲国产成人av制服丝袜 | 99在线免费观看视频 | 国产超碰在线 | 手机av在线免费观看 | 日日av| 尤物91 | 久久久久久久久久国产 | 久久久久三级 | 成人精品影院 | 五月婷婷激情网 | 亚洲 高清 成人 动漫 | 久久久久久亚洲精品 | 国产区在线视频 | 亚洲最大网站 | 青青草在线免费视频 | 亚洲一区二区免费 | 性生交大片免费看视频 | 久久久久人妻一道无码AV | 91免费毛片| 激情第四色 | 亚洲自偷自偷偷色无码中文 | 成人开心网 | 欧美一区日韩一区 | 欧洲自拍偷拍 | 伊人av综合| 日本一区二区网站 | 插插插网站| 91网页版| 国产精品成人在线观看 | 日本不卡一区在线 | 男女日批网站 | heyzo在线播放 | 国产污污网站 | 91视频免费观看 | 欧美在线专区 | jjzz国产 | 中文字幕色图 | 另类国产| 欧美一线高本道 | 免费成人高清在线视频 | 国产在视频线精品视频 | 永久中文字幕 | 久久久久久久久久99 | 九色首页 | 在线观看日韩av电影 | www天天干 | 另类专区欧美 | 色丁香婷婷| 国产日韩欧美二区 | 国产精品无码中文字幕 | 男生操女生在线观看 | 美女131爽爽爽 | 久久久久久国产精品三区 | 日本精品在线看 | 性欧美videossex精品 | 人妻av无码一区二区三区 | 国产91av视频 | 久久欧洲 | 黑人玩弄人妻一区二区三区免费看 | 国产一区视频在线观看免费 | 吸咬奶头狂揉60分钟视频 | 成人网久久 | 国产吞精囗交免费视频网站 | 色综合久久88色综合天天免费 | 波多野结衣一区二区三区 | 毛片无码免费无码播放 | 欧美拍拍| 日韩国产精品一区二区三区 | 五月的婷婷 |