無論是什么開發(fā)板,實(shí)現(xiàn)LED燈的點(diǎn)亮都應(yīng)該作為學(xué)習(xí)的第一步。
匯編點(diǎn)亮LED燈
查看原理圖
查看數(shù)據(jù)手冊(cè)設(shè)置相應(yīng)的寄存器,配置引腳
學(xué)會(huì)運(yùn)用pdf文檔的查詢功能!
3.匯編實(shí)現(xiàn)代碼
@****************************************************************************** @?File:led_on.S @?功能:LED點(diǎn)燈程序,點(diǎn)亮LED1 @******************************************************************************??????? .text .global?_start??????????????????????????@聲明_start全局變量 _start:????? ????????????LDR?????R0,=0x56000050??????@?R0設(shè)為GPFCON寄存器。此寄存器 ????????????????????????????????????????@?用于選擇端口B各引腳的功能: ????????????????????????????????????????@?是輸出、是輸入、還是其他 ????????????MOV?????R1,#0x00000100???????? ????????????STR?????R1,[R0]?????????????@?設(shè)置GPF4為輸出口,?位[8:7]=0b01 ????????????LDR?????R0,=0x56000054??????@?R0設(shè)為GPBDAT寄存器。此寄存器 ????????????????????????????????????????@?用于讀/寫端口B各引腳的數(shù)據(jù) ????????????MOV?????R1,#0x00000000??????@?此值改為0x00000010, ????????????????????????????????????????@?可讓LED1熄滅 ????????????STR?????R1,[R0]?????????????@?GPF4輸出0,LED1點(diǎn)亮 MAIN_LOOP: ????????????B???????MAIN_LOOP
4.編寫Makefile
led_on.bin?:?led_on.S ????arm-linux-gcc?-g?-c?-o?led_on.o?led_on.S????????#-g:加入調(diào)試信息?-c只編譯不連接 ????arm-linux-ld?-Ttext?0x0000000?-g?led_on.o?-o?led_on_elf??#-Ttext?0x0000000:指定代碼段地址0. ????arm-linux-objcopy?-O?binary?-S?led_on_elf?led_on.bin??#-O:使用指定格式來輸出文件 ????#?binary:二進(jìn)制的?-S:不從源文件復(fù)制重定位信息和符號(hào)信息到目標(biāo)文件中去 clean: ????rm?-f???led_on.bin?led_on_elf?*.o
至于為什么要采用Makefile以及交叉編譯工具介紹。請(qǐng)點(diǎn)補(bǔ)充知識(shí)簡單談?wù)凪akefile和交叉編譯工具鏈
5.燒錄到開發(fā)板中
通過dnw燒寫工具下載到Nandflash中運(yùn)行。
觀察現(xiàn)象:LED1*亮*
為什么是老大總是說下載到Nandflash呢?我下載到norflash不行嗎?請(qǐng)點(diǎn)補(bǔ)充知識(shí)燒寫flash問題
C語言實(shí)現(xiàn)