第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,这个库就可以直接在应用层进行调用
- #include <reg52.h>
- sbit BUZZ = P1^6;
- unsigned char T0RH = 0;
- unsigned char T0RL = 0;
- void OpenBuzz(unsigned int frequ);
- void StopBuzz();
- void main(){
- unsigned int i;
- TMOD = 0x01;
- EA = 1;
- while (1){
- OpenBuzz(4000);
- for (i=0; i<40000; i++);
- StopBuzz();
- for (i=0; i<40000; i++);
- OpenBuzz(1000);
- for (i=0; i<40000; i++);
- StopBuzz();
- for (i=0; i<40000; i++);
- }
- }
- void OpenBuzz(unsigned int frequ){
- unsigned int reload;
- reload = 65536 - (11059200/12)/(frequ*2);
- T0RH = (unsigned char)(reload >> 8);
- T0RL = (unsigned char)reload;
- TH0 = 0xFF;
- TL0 = 0xFE;
- ET0 = 1;
- TR0 = 1;
- }
- void StopBuzz(){
- ET0 = 0;
- TR0 = 0;
- }
- void InterruptTimer0() interrupt 1{
- TH0 = T0RH;
- TL0 = T0RL;
- BUZZ = ~BUZZ;
- }
第8章 让开发板发出声音,蜂鸣器驱动
原文:http://www.cnblogs.com/jingjing521/p/5638224.html