zoukankan      html  css  js  c++  java
  • 第8章 让开发板发出声音,蜂鸣器驱动

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

    心得体会

    在目录下创建一个Makefile文件

    先运行make clean命令清楚到编译生成的一些工程文件,执行make命令,重新编译驱动程序。将编译生成的buzzer.ko内核镜像文件拷贝出来,adb push buzzer.ko /fpga/moudles

    然后插入内核镜像文件到系统中,insmod buzzer.ko,并且装载设备驱动程序,mknod  /dev/buzzer c 248 0

    现在就可以在库层直接编写C/C++文件来调用这个驱动程序,这个可以在ubuntu中安装NDK编译环境,新建buzzer文件,编译生成一个库文件,那样就可以直接在应用层使用这个库提供的JNI方法,那样调用会显得更加的简单,当然这个调用方式google并不提倡,我在这里只是想展示这种调用方式而已

    构建一个jni工程,新建一个buzzer.c的源文件

    进行NDK编译,生成libbuzzer.so,这个库就可以直接在应用层进行调用

    1. #include <reg52.h>
    2. sbit BUZZ = P1^6; //蜂鸣器控制引脚
    3. unsigned char T0RH = 0; //T0 重载值的高字节
    4. unsigned char T0RL = 0; //T0 重载值的低字节
    5. void OpenBuzz(unsigned int frequ);
    6. void StopBuzz();
    7. void main(){
    8. unsigned int i;
    9. TMOD = 0x01; //配置 T0 工作在模式 1,但先不启动
    10. EA = 1;
    11. while (1){ //使能全局中断
    12. OpenBuzz(4000); //以 4KHz 的频率启动蜂鸣器
    13. for (i=0; i<40000; i++);
    14. StopBuzz(); //停止蜂鸣器
    15. for (i=0; i<40000; i++);
    16. OpenBuzz(1000); //以 1KHz 的频率启动蜂鸣器
    17. for (i=0; i<40000; i++);
    18. StopBuzz(); //停止蜂鸣器
    19. for (i=0; i<40000; i++);
    20. }
    21. }
    22. /* 蜂鸣器启动函数,frequ-工作频率 */
    23. void OpenBuzz(unsigned int frequ){
    24. unsigned int reload;//计算所需的定时器重载值
    25. reload = 65536 - (11059200/12)/(frequ*2); //由给定频率计算定时器重载值
    26. T0RH = (unsigned char)(reload >> 8); //16 位重载值分解为高低两个字节
    27. T0RL = (unsigned char)reload;
    28. TH0 = 0xFF; //设定一个接近溢出的初值,以使定时器马上投入工作
    29. TL0 = 0xFE;
    30. ET0 = 1; //使能 T0 中断
    31. TR0 = 1; //启动 T0
    32. }
    33. /* 蜂鸣器停止函数 */
    34. void StopBuzz(){
    35. ET0 = 0; //禁用 T0 中断
    36. TR0 = 0; //停止 T0
    37. }
    38. /* T0 中断服务函数,用于控制蜂鸣器发声 */
    39. void InterruptTimer0() interrupt 1{
    40. TH0 = T0RH; //重新加载重载值
    41. TL0 = T0RL;
    42. BUZZ = ~BUZZ; //反转蜂鸣器控制电平
    43. }
     
  • 相关阅读:
    hadoop文件写入
    elastic(10) 基本查询
    hadoop 小知识点
    "hadoop namenode -format"命令的作用和影响的文件
    elastic(9)映射
    Linux 学习笔记之 --- epoll 事件模型详解
    Linux 学习笔记之 --- select 与 poll 事件模型详解
    Tornado 高并发源码分析之二---Tornado启动和请求处理流程
    Tornado 高并发源码分析之五--- IOLoop 对象
    Tornado 高并发源码分析之四--- HTTPServer 与 TCPServer 对象
  • 原文地址:https://www.cnblogs.com/jingjing521/p/5638224.html
Copyright © 2011-2022 走看看