無論是什么開發(fā)板,實現(xiàn)LED燈的點亮都應(yīng)該作為學(xué)習(xí)的第一步。
匯編點亮LED燈
查看原理圖
查看數(shù)據(jù)手冊設(shè)置相應(yīng)的寄存器,配置引腳
學(xué)會運用pdf文檔的查詢功能!
3.匯編實現(xiàn)代碼
@****************************************************************************** @?File:led_on.S @?功能:LED點燈程序,點亮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點亮 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:二進制的?-S:不從源文件復(fù)制重定位信息和符號信息到目標(biāo)文件中去 clean: ????rm?-f???led_on.bin?led_on_elf?*.o
至于為什么要采用Makefile以及交叉編譯工具介紹。請點補充知識簡單談?wù)凪akefile和交叉編譯工具鏈
5.燒錄到開發(fā)板中
通過dnw燒寫工具下載到Nandflash中運行。
觀察現(xiàn)象:LED1*亮*
為什么是老大總是說下載到Nandflash呢?我下載到norflash不行嗎?請點補充知識燒寫flash問題
C語言實現(xiàn)