Tiny6410之蜂鸣器

  在Tiny6410开发板上有一个蜂鸣器,本次的实验就是驱动板子上的蜂鸣器,相当于测试一下板子上的蜂鸣器是否能够正常工作。

一、查看原理图

  通用查看Tiny6410的原理图如下图一(a)所示,通过分析该电路图可知:

1、三极管的基极(B)为高电平时三极管导通,此时蜂鸣器就会响。

2、三极管的基极(B)的状态又PWM0决定。

故只要设置PWM0的状态即可让蜂鸣器鸣叫。由下图一(b)可知PWM0对应的寄存器为GPF14(即GPF寄存器)。

图一(a)

图一(b)

二、查看数据手册

  根据以往的经验可知,GPF14对应的配置寄存器必为GPFCON,对应的数据寄存器必为GPFDAT。故要启动启动蜂鸣器就必须配置GPF寄存器。

1、配置GPFCON、GPFDAT寄存器的地址。由图二(a)可知GPFCON寄存器的地址位0xF0080A0、GPFDAT寄存器的地址位0xF0080A4。

2、由于蜂鸣器属于输出设备,故配置GPF14位输出。由图二(b)可知01表示输出即GPFCON寄存器的[29:28]设置为01。

3、由图二(c)可知当端口作为输出端口时,管脚状态于相应位的状态相同。即当GPFDAT的14位设置为高(低)电平时就意味着PWM0为高(低)电平。

图二(a)

图二(b)

图二(c)

三、代码编写

Tiny6410Adde.h文件

#ifndef _Tiny6410Addr_H
#define _Tiny6410Addr_H
//GPF
#define GPFCON          (*((volatile unsigned long *)0x7F0080A0))
#define GPFDAT          (*((volatile unsigned long *)0x7F0080A4))

#endif

Tiny6410Addr.h

buzzer.h文件

void buzzer_on();
void buzzer_off();
void buzzer_init(void);

buzzer.h

buzzer.c文件

#include "Tiny6410Addr.h"
#include "buzzer.h"

void buzzer_on()
{
    GPFDAT |= 1<<14;
}

void buzzer_off()
{
    GPFDAT &= ~(1<<14);
}

void buzzer_init(void)
{
    // set GPF14 as output
    GPFCON |= 1<<28;
    GPFCON &= ~(1<<29);
}

buzzer.c

main.c文件

#include "stdio.h"
#include "buzzer.h"
int main()
{
    buzzer_init();// 初始化buzzer
    while (1)
    {
      int n = 1000;
      buzzer_on();// 开启蜂鸣器
      while(n--);
      buzzer_off();// 关闭蜂鸣器
    }
    return 0;
}

main.c

Makefile文件

CC      = arm-linux-gcc
LD      = arm-linux-ld
AR      = arm-linux-ar
OBJCOPY = arm-linux-objcopy
OBJDUMP = arm-linux-objdump
CFLAGS         := -Wall -g -c -O2
objs := buzzer.o main.o

buzzer.bin: $(objs)
    ${LD} -Ttext 0x50000000 -o buzzer.elf $^
    ${OBJCOPY} -O binary -S buzzer.elf [email protected]
    ${OBJDUMP} -D buzzer.elf > buzzer.dis

%.o:%.c
    ${CC} $(CFLAGS) -o [email protected] $<

%.o:%.S
    ${CC} $(CFLAGS) -o [email protected] $<

clean:
    make  clean -C lib
    rm -f *.bin *.elf *.dis *.o
    

Makefiel

时间: 01-16

Tiny6410之蜂鸣器的相关文章

第八章 让开发板发出声音:蜂鸣器驱动

这一章的主要内容是让开发板发出声音——蜂鸣器驱动,在Linux驱动开发中重点也学习了这一部分内容,同时最后我们小组的考核内容是通过中断控制蜂鸣器发七个音符的音. 这一部分中,要中断控制蜂鸣器,在中断和蜂鸣器代码的基础上进行增加.中断与蜂鸣器的代码不变,在中断的测试代码中,首先要定义七个音符,之后将开发板上的七个键与七个音符相连接,再将七个音符的转换与蜂鸣器相连接,来达到所需的效果. 核心代码: int main() { int fd,fd1; int div; int keyval; fd1 =

东莞市骑乐缘告诉你平衡车蜂鸣器一直响的原因

适应当下的潮流,很多消费者对于平衡车的关注越来越高,"人手一台"可能成了以后的趋势,那么现在东莞市骑乐缘平衡车与你分享一下平衡车蜂鸣器一直响的原因,1.现在的平衡车都设有限速系统,如果持续速度过快加盟,平衡车蜂鸣器会一直响,碰到这种情况,注意把速度控制在一定的范围内就好啦(骗局),2.如果碰到平衡车蜂鸣器一直响而且人站上去无法正常的行驶,这个时候可能你就要检查一下你的平衡车是否电量充足,在电量不充足的情况下平衡车蜂鸣器一直响,而且无法正常行驶.3.平衡车蜂鸣器一直响是否碰到伪劣产品上当

第八章 蜂鸣器驱动

(1)代码重用 代码重用分为静态和动态两种.静态方式为编译由多个文件组成的 Linux 驱动,这种方式是代码级的重用,也就是将需要重用的代码和使用这些代码的使用者放在一起进行编译,最终生成一个可执行文件或程序 库 (.ko. .so 等).另外一种代码共享的方式:模块依赖,也称为导出符号.如果只能用一句话解释 如何利用导出符号实现代码共享,这句话就是“在一个驱动模块里使用另一个驱动模块里的被导出 的符号(常章.变量.函数等〉”,在 Linux 驱动中可以使用如下两个宏导出函数: EXPORT S

移植SDL运行库到Tiny6410 上

在移植游戏之前, 我们首先需要将 SDL/SDL_mixer/SDL_ttf/SDL_image 这四个库移植到 Tiny6410 上, 另外还需要 iconv 库. libiconv-1.13.1.tar.gz Iconv 库 下载:http://ftp.gnu.org/pub/gnu/libiconv/SDL-1.2.14.tar.gz SDL 库 http://www.libsdl.org/download-1.2.phpSDL_image-1.2.8.tar.gz SDL_image 库

Tiny6410移植tslib

一.将Tiny6410一线触摸程序改成输入设备(input device) 由于友善一线触摸下位机不开源,所以只能在官方提供的内核模块上进行修改. 官方源代码:http://pan.baidu.com/s/1bog4rZD 1.修改模块加载函数 1 static int __init dev_init(void) 2 { 3 int ret; 4 #ifdef TS_INPUT_DRIVER 5 /* alloc input system device */ 6 ts.input = input

v3学院带你学习《驱动蜂鸣器演奏歌曲》

此文章为原创出自 V3学院 www.v3edu.org,FPGA培训专家 一.实验背景(一)蜂鸣器的介绍1.蜂鸣器的作用蜂鸣器是一种一体化结构的电子讯响器,采用直流电压供电,广泛应用于计算机.打印机.复印机.报警器.电子玩具.汽车电子设备.电话机.定时器等电子产品中作发声器件.2.蜂鸣器的分类蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型.3.蜂鸣器的电路图形符号蜂鸣器在电路中用字母"H"或"HA"(旧标准用"FM"."LB"

让开发板发出声音:蜂鸣器驱动

第八章介绍了一个个实验:蜂鸣器驱动,让开发板发出声音. 将介绍蜂鸣器的实现原理,并实现一个完整的蜂鸣器驱动,通过该驱动可以控制蜂鸣器的打开与关闭. 蜂鸣器也称为PWM脉冲宽度调制,基本原理就是通过脉冲来控制蜂鸣器的打开和停止.蜂鸣器是开发板上带的一个硬件设备,可以通过向寄存器写入特定的值来控制蜂鸣器发出的声音.本节介绍了蜂鸣器的实现原理,并实现一个完整的蜂鸣器驱动,可以打开和关闭.PWM驱动的实现方式不同于LED驱动,PWM驱动由多个文件组成,这也是大多数Linux驱动的标准实现方式. Linu

第八章 让开发板发出声音:蜂鸣器驱动 心得笔记

蜂鸣器也称为PWM脉冲宽度调制,基本原理就是通过脉冲来控制蜂鸣器的打开和停止.蜂鸣器是开发板上带的一个硬件设备,可以通过向寄存器写入特定的值来控制蜂鸣器发出的声音.本节介绍了蜂鸣器的实现原理,并实现一个完整的蜂鸣器驱动,可以打 开和关闭.PWM驱动的实现方式不同于LED驱动,PWM驱动由多个文件组成,这也是大多数Linux驱动的标准实现方式. Linux驱动的代码重用有很多种方法.分为静态重用和动态重用,静态重用是代码级的重用,就是将需要重用的代码和使用这些代码的文档放在一起编 译,最终生成一个

tiny6410的QT4.7开发与移植

一.系统环境 软件系统:vmware6.5 + fedora 9 开发版:tiny6410 qt版本:qt4.7.0 编译器:arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz(tiny6410自带) 二.开发平台搭建步骤 将arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz复制到Fedora的目录下,如/tmp,然后解压: cd /tmp tar xvzf arm-linux-gcc-4.5.1-v6-vfp-20101103.tgz -