目录
1 说明
在网上无意间看到RT-Thread实现蜂鸣器播放器的文档,看过之后忍不住赞叹RT-Thread真是开源界的国产良心之作,除了大量的文档之外还有一系列的视频用于学习。先列出本文的参考文档网址:https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/tutorial/beep-player/README.md
百度网盘是作者在hi3518ev300做的简单示例:
链接:https://pan.baidu.com/s/1M35Dav9WZBoAgPGYg8jTiA
提取码:jc5g
2 开发过程
刚巧手里面有一块hi3518ev300的带蜂鸣器的板子,所以拿它来耍一下。没有做PWM的驱动开发,使用的是应用层驱动接口mmap,核心函数如下:
开发的主要任务还是阅读芯片手册,配置管脚复用、PWM频率、占空比、脉冲个数,其中PWM频率、占空比、脉冲个数跟音乐节拍强相关,不过不用担心音乐怎么转化为代码,因为有软件MusicEncode做这件事,下面列出两只老虎的代码示例:
unsigned char g_au8Song1[] =
{//"两只老虎"
0x15, 0x02, 0x16, 0x02, 0x17, 0x02, 0x15, 0x02, 0x15, 0x02,
0x16, 0x02, 0x17, 0x02, 0x15, 0x02, 0x17, 0x02, 0x18, 0x02,
0x19, 0x01, 0x17, 0x02, 0x18, 0x02, 0x19, 0x01, 0x19, 0x03,
0x1A, 0x03, 0x19, 0x03, 0x18, 0x03, 0x17, 0x02, 0x15, 0x16,
0x19, 0x03, 0x1A, 0x03, 0x19, 0x03, 0x18, 0x03, 0x17, 0x02,
0x15, 0x16, 0x15, 0x02, 0x0F, 0x02, 0x15, 0x01, 0x15, 0x02,
0x0F, 0x02, 0x15, 0x01, 0x00, 0x00
};