【ARM】Tiny4412裸板编程之蜂鸣器
生活随笔
收集整理的這篇文章主要介紹了
【ARM】Tiny4412裸板编程之蜂鸣器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
00. 目錄
文章目錄
- 00. 目錄
- 01. 控制原理
- 02. 配置寄存器
- 03. 程序示例一
- 04. 程序示例二
- 05. 程序示例三
- 06. 附錄
01. 控制原理
咱們的蜂鳴器在底板上,所以需要看底板的原理圖
打開底板原理圖(Tiny4412SDK-1506-Schematic.pdf)
由上圖可知,Tiny4412有1個蜂鳴器,控制它們四個引腳分別是GPD0_0,由原理可知,當IO引腳為高電平時,蜂鳴器就響,當IO引腳為低電平時蜂鳴器就不響了。我們要做的工作就是設置GPD0_0為輸出功能,且控制且輸出電平高低即可。
02. 配置寄存器
由原理圖可知,程序只進行了兩步操作。
第一步:GPD0功能配置寄存器,地址為0x11400000+0x000000A0=0x114000A0,每四位控制一個引腳,0輸入,1輸出等等,這里我們用到的是輸出功能,相應位(GPDCON[1])配置為1
第二步:GPD0數據寄存器,輸出時相應位賦值0/1,可以輸出高低電平,引腳配置為輸入,讀取相應引腳可以獲取IO狀態,地址為0x11400000+0x000000A4=0x114000A4
03. 程序示例一
蜂鳴器開
bell.s文件內容如下
.section .text.align 2.global bell_init bell_init:@GPD0_0ldr r0, =0x114000A0ldr r1, [r0]bic r1, r1, #0xforr r1, r1, #0x1str r1, [r0]mov pc, lr.align 2.global bell_on bell_on:ldr r0, =0x114000A4ldr r1, [r0]orr r1, r1, #0x1str r1, [r0]mov pc, lr.align 2.global bell_off bell_off:ldr r0, =0x114000A4ldr r1, [r0]bic r1, r1, #0x1str r1, [r0]mov pc, lrtest.s文件內容如下
.section .rodata.align 2 .LC0:.string "led all off\n".section .text.align 2.global _start _start:stmfd sp!, {lr}bl bell_initbl bell_onldmfd sp!, {pc}04. 程序示例二
bell.s文件內容如下
.section .text.align 2.global bell_init bell_init:@GPD0_0ldr r0, =0x114000A0ldr r1, [r0]bic r1, r1, #0xforr r1, r1, #0x1str r1, [r0]mov pc, lr.align 2.global bell_on bell_on:ldr r0, =0x114000A4ldr r1, [r0]orr r1, r1, #0x1str r1, [r0]mov pc, lr.align 2.global bell_off bell_off:ldr r0, =0x114000A4ldr r1, [r0]bic r1, r1, #0x1str r1, [r0]mov pc, lrtest.s文件內容如下:
.section .rodata.align 2 .LC0:.string "led all off\n".section .text.align 2.global _start _start:stmfd sp!, {lr}bl bell_initbl bell_offldmfd sp!, {pc}05. 程序示例三
蜂鳴器開1秒 關1秒 如此循環
lib.s文件內容
.align 2.global led_delay led_delay:stmfd sp!, {lr}mov lr, pcldr pc, =0x43e26480ldmfd sp!, {pc}bell.s文件內容
.section .text.align 2.global bell_init bell_init:@GPD0_0ldr r0, =0x114000A0ldr r1, [r0]bic r1, r1, #0xforr r1, r1, #0x1str r1, [r0]mov pc, lr.align 2.global bell_on bell_on:ldr r0, =0x114000A4ldr r1, [r0]orr r1, r1, #0x1str r1, [r0]mov pc, lr.align 2.global bell_off bell_off:ldr r0, =0x114000A4ldr r1, [r0]bic r1, r1, #0x1str r1, [r0]mov pc, lrtest.s文件內容
.align 2 .LC0:.string "led all off\n".section .text.align 2.global _start _start:stmfd sp!, {lr}bl bell_init1:bl bell_onldr r0, =1000000bl led_delaybl bell_offldr r0, =1000000bl led_delayb 1bldmfd sp!, {pc}06. 附錄
Exynos 4412 SCP_Users Manual_Ver.0.10.00_Preliminary0.pdf
總結
以上是生活随笔為你收集整理的【ARM】Tiny4412裸板编程之蜂鸣器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【ARM】Tiny4412裸板编程之LE
- 下一篇: 【ARM】Tiny4412裸板编程之按键