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裸板编程之蜂鸣器相关推荐

  1. 【ARM】Tiny4412裸板编程之蜂鸣器(C语言)

    00. 目录 文章目录 00. 目录 01. 控制原理 02. 配置寄存器 03. 程序示例一 04. 程序示例二 05. 程序示例三 06. 附录 01. 控制原理 咱们的蜂鸣器在底板上,所以需要看 ...

  2. 【ARM】Tiny4412裸板编程之异常(软中断)

    00. 目录 文章目录 00. 目录 01. 开发环境 02. 中断向量表 03. 中断向量表实现 04. 设置Vectors bit 05. 程序示例一 06. 程序示例二 07. 附录 01. 开 ...

  3. 【ARM】Tiny4412裸板编程之异常(中断向量表)

    00. 目录 文章目录 00. 目录 01. 开发环境 02. 异常向量表 03. 异常向量表实现 04. 设置Vectors bit 05. 主函数实现 06. 附录 01. 开发环境 开发板:Ti ...

  4. 【ARM】Tiny4412裸板编程之异常

    00. 目录 文章目录 00. 目录 01. 开发环境 02. 概述 03. ARM处理器模式 04. 异常类型 05. 异常处理 5.1 异常处理伪代码 5.2 复位异常 5.3 未定义指令异常 5 ...

  5. 【ARM】Tiny4412裸板编程之协处理器

    00. 目录 文章目录 00. 目录 01. 开发环境 02. 协处理器简介 03. 获取Main ID 04. 获取CCSIDR 05. 获取SCTLR 06. ID_MMFR3 07. 附录 01 ...

  6. 【ARM】Tiny4412裸板编程之静态库(libc.a)

    00. 目录 文章目录 00. 目录 01. 开发环境 02. 概述 03. 库的来源 04. 程序示例一 05. 程序示例二 06. 附录 01. 开发环境 开发板:Tiny4412SDK标准版 「 ...

  7. 【ARM】Tiny4412裸板编程之按键(C语言)

    00. 目录 文章目录 00. 目录 01. 开发环境 02. 控制原理 03. 配置寄存器 04. 程序示例一 05. 程序示例二 06. 附录 01. 开发环境 开发板:Tiny4412SDK标准 ...

  8. 【ARM】Tiny4412裸板编程之按键

    00. 目录 文章目录 00. 目录 01. 开发环境 02. 控制原理 03. 配置寄存器 04. 程序示例一 05. 程序示例二 06. 附录 01. 开发环境 开发板:Tiny4412SDK标准 ...

  9. 配置eclipse为ARM嵌入式开发板编程

    配置eclipse为ARM嵌入式开发板编程 1-计算机环境 操作系统:window10 编程软件:Eclipse IDE for C and C++ Developers - 2022-09 Wind ...

最新文章

  1. 极致真实感受 无边硬屏即将登场
  2. js实现全选和反选功能
  3. mybaits三:全局配置文件(全面)
  4. PHP中利用header设置content-type和常见文件类型的content-type
  5. MongoDB最简单的入门教程之四:使用Spring Boot操作MongoDB
  6. Javascript this关键字 指向详解
  7. 删除Office系列软件多余激活信息
  8. 继京东27亿买饭店之后 头条要花90亿买广场?张一鸣曾表示年轻人应住市区
  9. canvas绘图粒子扩散效果【原创】
  10. WPF界面设计中常用的一些代码片段及属性
  11. 案例上手 Spring 全家桶
  12. Unity3D开发之制作序列帧动画
  13. 【Qt基础】2.Qt基础 窗口、资源、布局与控件
  14. 局域网在线计算机扫描仪,局域网内也共享扫描仪
  15. 一文读懂反向传播算法原理
  16. vscode ssh连接服务器报错:过程试图写入的管道不存在
  17. 解决Powershell前面没有base,无法激活虚拟环境问题
  18. idea修改回默认字体_设置 IntelliJ IDEA 主题和字体的方法
  19. 对炒股的一点个人浅见
  20. 语音情感识别中的音频检测算法学习

热门文章

  1. Spring整合Hibernate 二 - 声明式的事务管理
  2. [置顶]信息发布系统 Jquery+MVC架构开发(7) Controller层
  3. 从字符串 到类型 Boolean 的转换无效。
  4. java:蓝桥杯,矩形面积交
  5. scrapy 解析css,Scrapy基础(六)————Scrapy爬取伯乐在线一通过css和xpath解析文章字段...
  6. c语言malloc引用类型作参数,C语言动态内存函数的理解和总结
  7. 去掉dist后php后缀也没有了,DVWA:环境搭建 - osc_gz5w458v的个人空间 - OSCHINA - 中文开源技术交流社区...
  8. Java黑皮书课后题第6章:*6.39(几何:点的位置)编程练习题3.32显示如何测试一个点是否在一个有向直线的左侧、右侧或在直线上,编写一个程序,输入三个点p0p1p2,显示p2是否在直线p0p1
  9. php判断三角形类型,C#_C#判断三角形的类型,题目描述: 输入三角形的三 - phpStudy...
  10. 复位 stm32_分析一个关于STM32 芯片异常复位的经典案例!