【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, lr
test.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, lr
test.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, lr
test.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裸板编程之蜂鸣器(C语言)
00. 目录 文章目录 00. 目录 01. 控制原理 02. 配置寄存器 03. 程序示例一 04. 程序示例二 05. 程序示例三 06. 附录 01. 控制原理 咱们的蜂鸣器在底板上,所以需要看 ...
- 【ARM】Tiny4412裸板编程之异常(软中断)
00. 目录 文章目录 00. 目录 01. 开发环境 02. 中断向量表 03. 中断向量表实现 04. 设置Vectors bit 05. 程序示例一 06. 程序示例二 07. 附录 01. 开 ...
- 【ARM】Tiny4412裸板编程之异常(中断向量表)
00. 目录 文章目录 00. 目录 01. 开发环境 02. 异常向量表 03. 异常向量表实现 04. 设置Vectors bit 05. 主函数实现 06. 附录 01. 开发环境 开发板:Ti ...
- 【ARM】Tiny4412裸板编程之异常
00. 目录 文章目录 00. 目录 01. 开发环境 02. 概述 03. ARM处理器模式 04. 异常类型 05. 异常处理 5.1 异常处理伪代码 5.2 复位异常 5.3 未定义指令异常 5 ...
- 【ARM】Tiny4412裸板编程之协处理器
00. 目录 文章目录 00. 目录 01. 开发环境 02. 协处理器简介 03. 获取Main ID 04. 获取CCSIDR 05. 获取SCTLR 06. ID_MMFR3 07. 附录 01 ...
- 【ARM】Tiny4412裸板编程之静态库(libc.a)
00. 目录 文章目录 00. 目录 01. 开发环境 02. 概述 03. 库的来源 04. 程序示例一 05. 程序示例二 06. 附录 01. 开发环境 开发板:Tiny4412SDK标准版 「 ...
- 【ARM】Tiny4412裸板编程之按键(C语言)
00. 目录 文章目录 00. 目录 01. 开发环境 02. 控制原理 03. 配置寄存器 04. 程序示例一 05. 程序示例二 06. 附录 01. 开发环境 开发板:Tiny4412SDK标准 ...
- 【ARM】Tiny4412裸板编程之按键
00. 目录 文章目录 00. 目录 01. 开发环境 02. 控制原理 03. 配置寄存器 04. 程序示例一 05. 程序示例二 06. 附录 01. 开发环境 开发板:Tiny4412SDK标准 ...
- 配置eclipse为ARM嵌入式开发板编程
配置eclipse为ARM嵌入式开发板编程 1-计算机环境 操作系统:window10 编程软件:Eclipse IDE for C and C++ Developers - 2022-09 Wind ...
最新文章
- 极致真实感受 无边硬屏即将登场
- js实现全选和反选功能
- mybaits三:全局配置文件(全面)
- PHP中利用header设置content-type和常见文件类型的content-type
- MongoDB最简单的入门教程之四:使用Spring Boot操作MongoDB
- Javascript this关键字 指向详解
- 删除Office系列软件多余激活信息
- 继京东27亿买饭店之后 头条要花90亿买广场?张一鸣曾表示年轻人应住市区
- canvas绘图粒子扩散效果【原创】
- WPF界面设计中常用的一些代码片段及属性
- 案例上手 Spring 全家桶
- Unity3D开发之制作序列帧动画
- 【Qt基础】2.Qt基础 窗口、资源、布局与控件
- 局域网在线计算机扫描仪,局域网内也共享扫描仪
- 一文读懂反向传播算法原理
- vscode ssh连接服务器报错:过程试图写入的管道不存在
- 解决Powershell前面没有base,无法激活虚拟环境问题
- idea修改回默认字体_设置 IntelliJ IDEA 主题和字体的方法
- 对炒股的一点个人浅见
- 语音情感识别中的音频检测算法学习
热门文章
- Spring整合Hibernate 二 - 声明式的事务管理
- [置顶]信息发布系统 Jquery+MVC架构开发(7) Controller层
- 从字符串 到类型 Boolean 的转换无效。
- java:蓝桥杯,矩形面积交
- scrapy 解析css,Scrapy基础(六)————Scrapy爬取伯乐在线一通过css和xpath解析文章字段...
- c语言malloc引用类型作参数,C语言动态内存函数的理解和总结
- 去掉dist后php后缀也没有了,DVWA:环境搭建 - osc_gz5w458v的个人空间 - OSCHINA - 中文开源技术交流社区...
- Java黑皮书课后题第6章:*6.39(几何:点的位置)编程练习题3.32显示如何测试一个点是否在一个有向直线的左侧、右侧或在直线上,编写一个程序,输入三个点p0p1p2,显示p2是否在直线p0p1
- php判断三角形类型,C#_C#判断三角形的类型,题目描述:
输入三角形的三 - phpStudy...
- 复位 stm32_分析一个关于STM32 芯片异常复位的经典案例!