點亮指路燈led

2022-05-06 04:48:09 字數 2468 閱讀 3602

為什麼要使用led?

(bootloader,kernel)開發初期,由於串列埠等硬體尚未被初始化,因此除錯手段相當有限,這時通常會採用led來做為程式除錯的重要手段。

led驅動設計:

1、設定gpio控制暫存器,把引腳設定為輸出功能

2、根據原理圖設定gpio資料暫存器,點亮led

.text

.global

_start

_start:

b reset

ldr pc, _undefined_instruction

ldr pc, _software_interrupt

ldr pc, _prefetch_abort

ldr pc, _data_abort

ldr pc, _not_used

ldr pc, _irq

ldr pc, _fiq

_undefined_instruction: .word undefined_instruction

_software_interrupt:.word software_interrupt

_prefetch_abort:.word prefetch_abort

_data_abort:.word data_abort

_not_used:.word not_used

_irq:.word irq

_fiq:.word reset

undefined_instruction:

nopsoftware_interrupt:

nopprefetch_abort:

nopdata_abort:

nopnot_used:

nopirq:

nopfiq:

nopreset:

bl set_svc

bl disable_watchdog

bl disable_interrupt

bl disable_mmu

bl light_led

set_svc:

mrs r0, cpsr

bic r0, r0, #

0x1f

orr r0, r0, #

0xd3

msr cpsr, r0

mov pc, lr

#define pwtcon 0x53000000disable_watchdog:

ldr r0, =pwtcon

mov r1, #

0x0str r1, [r0]

mov pc, lr

disable_interrupt:

mvn r1, #

0x0ldr r0, =0x4a000008

str r1,[r0]

mov pc, lr

disable_mmu:

mcr p15,

0,r0,c7,c7,0

mrc p15,

0,r0,c1,c0,0

bic r0,r0,#

0x00000007

mcr p15,

0,r0,c1,c0,0

mov pc, lr

#define gpbcon 0x56000010

#define gpbdat 0x56000014light_led:

ldr r0, =gpbcon

ldr r1, =0x15400

str r1,[r0]

ldr r0, =gpbdat

ldr r1, =0x6bf

str r1, [r0]

mov pc, lr

黃色部分就是點亮led的程式,我之前學51、k60、stm32的時候,發現這些設定暫存器是驚人的相似,都是先選擇模式,在選擇怎麼輸出。

6410還需要外設基位址初始化,cp15暫存器裡面有管理外設基位址的暫存器。

外設基位址是0x70000000,這個在6410手冊裡面搜尋70000000就行

這樣就生成了含有加頭**的gboot 

智慧型路燈點亮新型城市

大概很多人都有聽說過智慧型城市,但是也有很多人不會想到路燈,而它卻是智慧型城市中不可或缺的一部分。目前,全球越來越多的城市把路燈改造作為物聯網建設的節點,並相容多個行業的應用。例如,監測節約照明能源 尋找空閒車位 測量空氣質素 安防行業等。一 什麼是物聯網智慧型路燈 二 智慧型路燈 小身段,大功能 ...

點亮led過程分析

在mini2440中,led,按鍵等驅動預設已經被編譯入核心,所以一直不知道同乙個硬體裝置資源能不能作為多個模組,編譯入核心。故重寫了乙個myled.ko,系統預設是led.ko,並用應用程式檢測。myled.c include include include include include inc...

點亮LED燈(一)

想當初都是用彙編來編寫微控制器的程式,那滋味現在想來都是滿滿的回憶,還是用c語言寫起來爽快啊!用c寫微控制器程式,只需要引入標頭檔案即可,實際上該標頭檔案只是定義了特殊功能暫存器位址。為了今後使用方便,我們封裝乙個函式,用來開關led燈,通過引數來控制操作的p埠,並且引入掩碼來操作單個和多個bit位...