ARM裸機程式設計系列 buzzer

2021-06-28 13:09:23 字數 1273 閱讀 3054

蜂鳴器控制很簡單只需要控制引腳輸出即可。通過原理圖檢視找到對應的gpio

下面是**:

#start.s

.global _start

_start:

# 關閉看門狗

ldr r0, =0xe2700000

mov r1, #0

str r1, [r0]

# 設定棧,以便呼叫c函式

ldr sp, =0x31000000

# 呼叫main

bl main

halt:

b halt

#define 	gpj2con 	(*(volatile unsigned long *) 0xe0200280)

#define gpj2dat (*(volatile unsigned long *) 0xe0200284)

// 延時函式

void delay(unsigned long count)

void main()

}

// buzzer.c

#define gpd0con (*(volatile unsigned long *)0xe02000a0)

#define gpd0dat (*(volatile unsigned long *)0xe02000a4)

// 初始化buzzer

void buzzer_init(void)

void buzzer_on(void)

void buzzer_off(void)

#makefile

buzzer.bin: start.o main.o buzzer.o

arm-linux-ld -ttext 0x30000000 -o buzzer.elf $^

arm-linux-objcopy -o binary buzzer.elf buzzer.bin

arm-linux-objdump -d buzzer.elf > buzzer_elf.dis

%.o : %.s

arm-linux-gcc -o $@ $< -c

%.o : %.c

arm-linux-gcc -o $@ $< -c

clean:

rm *.o *.elf *.bin *.dis *.exe -f

燒寫 方式:

arm 裸機程式設計 串列埠篇

uart 通用非同步收發器,是一種全雙工序列非同步通訊 波特率與bps 實際上波特率並不等於bps。波特率 一秒鐘傳輸碼元的個數 bps 一秒鐘傳送的位元位位數 而碼元是承載資訊量的基本訊號單位,乙個二進位制碼元佔乙個位元位 所以僅傳輸二進位制碼元時,bps等於波特率 同步和非同步方式 非同步 非同...

ARM裸機開發(三)SDRAM程式設計

以下裸機程式基於gt2440,編譯器為arm linux gcc 4.4.3。程式結構 程式由sdram.s和main.c兩個檔案組成,sdram.s檔案完成一些初始化工作,如時鐘初始化,記憶體控制器初始化,拷貝第二階段 到sdram等 main.c負責迴圈點亮 熄滅四個led。程式流程 上電時,c...

ARM 2410裸機系列 中斷處理

目的 為了更好地掌握s3c2410中斷的原理及中斷程式的編寫。內容利用s3c2410的外部中斷0和外部中斷1實現兩個按鍵功能 原理 本次選擇的是外部中斷extint0和extint11。中斷的產生分別來自按鈕sb1202和sb1203,當按鈕按下時,extint0 對應管腳gpf0 或extint1...