從零開始的LED燈(基於嵌入式開發S3C2440)

2021-08-03 07:57:06 字數 1917 閱讀 5711

從零開始的led燈(基於嵌入式開發s3c2440)

首先我們使用的是tq2440開發板,嵌入式開發和微控制器開發有些不一樣,對於初學者來說,硬要將嵌入式的裸機開 發

說成微控制器開發,我覺得是不當的,首先,大家都玩過51和stm32吧,首先他們的啟動都是編譯器幫你們寫好了的

吧,基本不需要寫makefile,51最簡單了,點亮一盞燈,只需要看原理圖就可以確定,哪個引腳需要配置成高電平或 者

低電平最可以了,然後stm32的開發比51微控制器更難的地方就是需要配置引腳的狀態(上拉或者輸入輸出等等), 說

白了,st公司幫你們把他的位址空間分配成乙個個暫存器,你需要操作上層的東西就可以了。

但是,嵌入式領域,沒有任何人幫助你完全這些東西,甚至你需要從彙編開始寫起啟動**,但是你需要知道一點點 會

彙編的**。

1、**1:點亮一盞led燈

由上圖可以知道led的點亮需要引腳輸出低電平就可以了。

.text

.global _start

_start:

ldr r0,=0x56000010 @ gpbcon=0x560000010, 就是

//需要修改的gpio的引腳gpb5

mov r1,#0x00000400 //?0001 1001 0000?gpb2:輸出引腳

//gpb3:tout3 gpb4:輸出引腳

str r1,[r0] //把 r0位址寫入r1的內容

ldr r0,=0x56000014 //後面的道理也是同一樣的

mov r1,#0x00000000

str r1,[r0]

main_loop:

b main_loop

為何是0x56000010和0x56000014,我可以肯定的是stm32不會讓你操作位址,很少的地方使用指標和結構體和鍊錶

的東西,但是公司裡面寫的**全部都是這些c語言。

根據原理圖可以看到那些地方需要使用到那些暫存器,然後可以通過晶元手冊查詢到相應的**。

2、**2;使用c語言學習使用

init.s

.text

.global _start

_start:

ldr r0,=0x53000000 //看門狗的暫存器的位址

mov r1,#0x0

str r1,[r0] //如果不進行硬體的初始化,那麼看門狗會一直復位

ldr sp,=1024*4 //設定堆疊,注意不能大於4k,因為片內的記憶體只有4錕

bl main

halt_loop:

b halt_loop

main.c

#define gpbcon      (*(volatile unsigned long *)0x56000010)   //加上關鍵字volatile的話,那麼就會不斷的檢查這個位址的
//內容是否總是檢查

#define gpbdat (*(volatile unsigned long *)0x56000014)

int main()

學習嵌入式,從零開始(硬體篇)

這段時間很多關注者問起怎樣學習嵌入式,對於乙個剛開始接觸嵌入式的朋友來說,這的確是個問題。在這裡筆者就給大家講講怎樣利用 it指路燈 來學習嵌入式系統。學習嵌入式之前我們需要了解什麼是嵌入式。官方說法 嵌入式系統是一種專用的計算機系統,作為裝置或裝置的一部分。國內普遍認同的嵌入式系統定義為 以應用為...

從零開始學習嵌入式 筆記(1)

shell命令解析器 bin bash 或 bin sh 開啟不同的shell sh bourne shell bash bourne again shell 定義變數 例 a hello world echo a echo 傳入指令碼的命令列引數個數 所有命令列的引數值,在各個引數值之間有空格 0...

嵌入式實驗 彙編點亮LED 燈

嵌入式實驗 彙編點亮led 燈 一 實驗目的 通過本次實驗,使學生能夠操作 s5pv210實驗平台,搭建並使用交叉編譯環境,具備初步的嵌入式裸機平台應用開發能力。二 實驗原理 由原理圖可知,點亮 210 的 4 個 led 需如下 2 個步驟 第一步 設定暫存器gpj2con,使gpj2 0 1 2...