第一我在此強調的是,要學會根據原理圖和相關的手冊實現基本功能,主要學習這個過程。
正文:第一步:先看原理圖了解led是和哪個管腳連線的,然後我們才能通過操作暫存器的方式
控制管腳,進而控制led
通過原理圖可知:要想將led點亮,只需要將
gpj0端設定為低電平,並且為輸出狀態
就可以了,這裡我們只設定前面三個gpj0埠的。
對應的埠是gpi0_3,gpi0_4,gpi0_5
第二步:
1、
檢視涉及到的暫存器
引腳高低
電平一致
gpi0pud:(pull up down)控制引腳內部弱上拉,下拉
gpj0drv:(driver)配置引腳的驅動能力
根據以上的分析得出結論:我們只需要寫
gpj0con和gpj0dat
2、具體分析各個所用到的暫存器
往暫存器裡面寫1可以設定為輸出模式了。(初始值為0,預設為輸入模式)。
為什麼要設定為低電平和輸出模式那?
當電流從高電平流向低電平是led會亮從原理圖中可以看出左邊接的是高電壓,所以右邊的埠肯定
接低電平了。
當埠設定為輸入模式時,我們gpj0dat所對應的位的資料(1或0)是由gpj0介面本身的狀態決定
的。當埠為低電平時,暫存器上的值為0,為高電平是,暫存器上的值為1。
而當埠設定為輸出模式時,埠的狀態是由gpj0dat所對應的位(1或0)決定的。也就是說我們往
暫存器上寫0,埠就是低電平;寫1時,埠上就是高電平。
這就是我們為什麼要用輸出模式和低電平。
三、具體**實現
(1)、功能:全部點亮
_start: //這裡用的是ldr的偽命令,就是不用區分合法立即數還是非法立即數,=就是偽,%#就是真
ldr r0, =0xe0200240 //0xe0200240對應的是gpj0con暫存器,它就是控制介面的狀態的,是輸出還是輸入
ldr r1, =0x11111111 //0x11111111就對應著8個介面的狀態,1就表示輸出狀態,0就表示輸入狀態,每個介面就有
str r1, [r0] //8個狀態,其他狀態可以查資料手冊就知道了
ldr r0, =0x0 //這裡的0表示的就是輸出了低電平,如果是1的話就輸出的是高電平
ldr r1, =0xe0200244 //0xe0200244對應的是gpj0dat暫存器,它就是用來輸出什麼的,是輸出高電平還是低電平
str r0, [r1]
b .
(2)、功能:用位操作來實現指定的燈亮
.global _start
_start:
ldr r0, =gpj0con
ldr r1, =0x11111111
str r1, [r0]
ldr r0, =(1<<3) | (0<<4) | (1<<5) //這裡就是使用了那個或運算,和左移,它的作用和0x2的作用一樣
ldr r1, =gpj0dat //在中間加了那個0是為了比較容易看清楚**的作用
str r0, [r1]
b . //和那個b . 的作用是一樣的啊
(3)、乙個延時函式的寫法,及其彙編**的解釋
delay:
ldr r2, =9000000
ldr r3, =0x0
delay_loop:
sub r2, r2, #1 //這裡就是等價於:sub r2, #1,其實就是r2 = r2 - 1;
cmp r2, r3 //比較r2和r1的值
bne delay_loop //cmp 和bne連用: 先是用cmp進行那個比較,然後將比較的結果與0比較,如果不為0,則跳到bne緊跟著的標記(如bne sleep,則跳到sleep處)。就是說不相等就跳轉。
mov pc, lr
(4)、c語言實現燈一閃一閃
#define gpj0con 0xe0200240
#define gpj0dat 0xe0200244
void delay(void);
//這個函式就用來實現一閃一閃的功能
void led_blink(void)
}void delay(void)
歡迎各位指出不足之 ARM裸機 S5PV210簡析
armv7架構是在armv6架構的基礎上誕生的。該架構採用了thumb 2技術,thumb 2技術是在arm的thumb 壓縮技術的基礎上發展起來的,並且保持了對現存arm解決方案的完整的 相容性。thumb 2技術比純32位 少使用 31 的記憶體,減小了系統開銷。同時能夠提供比已有的基於thum...
ARM之S5pv210關看門狗
一 什麼是看門狗?看門狗本身是乙個定時器,如果你在定時器完成之前未重置計時器的值那麼它就會重啟整個系統。但是我們 系統正常執行下並不希望他重啟,所以就需要 餵狗 這個操作 即每次定時結束之前給定時器值重置 二 什麼時候會用到看門狗?假設我們將一些裝置放在環境惡劣的情況下,如果裝置出現了問題可能需要乙...
S5PV210 裸機中斷
這裡我以外部中斷為例畫出了中斷響應的過程。當外部中斷得到響應,會由硬體自動轉到異常向量表,執行對應的異常處理程式。在這裡指的就是irq的處理程式。在異常處理程式irq handle中將會執行現場的保護與恢復,以及最重要的中斷處理函式 注意,這裡就來到了中斷處理部分,而不是異常處理了,相當於是乙個兩級...