版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、STM32F103通用计时器PWM应用程序:蜂鸣器演奏曲1 .说明:本例程将例程LM3SLib_Timer.pdf文档中的例程9和例程10(PWM应用程序:蜂鸣器演奏曲)移植到STM32F103中。2 .流程LM3SLib_Timer.pdf例程9和例程10的副本:例行程序9. Timer PWM应用:蜂鸣器声音如图1.1所示,为EasyARM1138开发的板上的蜂鸣器驱动电路。 蜂鸣器类型是交流蜂鸣器,也称为被动蜂鸣器,要发出声音就需要输入方波的列,声音的频率和驱动方波的频率相同。图1.1蜂鸣器驱动电路程序表1.9是Timer模块的16位PWM模式的应用,可以按交流蜂鸣器,运行后可以按不同的
2、频率按两次蜂鸣器。 其中“buzzer.h”和“buzzer.c”是蜂鸣器的司机,只有3个司机函数,使用方便。程序列表1.9 Timer PWM应用程序:蜂鸣器声音文件: main.c#include systemInit.h #include buzzer.h /主函数(程序条目)PPS (PS )举止jtagWait (); 防止JTAG的故障很重要!时钟输入(); /时钟初始化:水晶振动,6MHzbuzzerInit (); /蜂鸣器初始化buzzerSound(1500) /蜂鸣器发出1500Hz的声音sysctl delay (400 * (thesysclock/3000 ) );
3、 /延迟约400毫秒buzzerSound(2000) /蜂鸣器发出2000Hz的声音sysctl delay (800 * (thesysclock/3000 ) ); /延迟约800毫秒buzzerQuiet (); /蜂鸣音for (; (请参见)举止以下以下文件: buzzer.h#ifndef_buzzer_h_1#define_buzzer_h_1/蜂鸣器初始化外部void buzzer init (void )/蜂鸣器发出指定频率的声音externvoidbuzzersound (unsignedshorusfreq )蜂鸣器停了。外部void buzzer quiet (voi
4、d )#endif/buzzer_h_文件: buzzer.c#include buzzer.h #include#include#include#include#include#define PART_LM3S1138#include# definesysctlcperiodenablesysctlmeripheralenable# definegpiopintypeoutgpiopintypegpioutput/声明全局系统时钟变量。外部无符号长记录时钟;和,/蜂鸣器初始化void buzzerInit(void )举止sysctperiodenable (sysctl _ per iph
5、 _ TIMER1 )/使能time R1模块启用sysctperiodenable (CCP3_ per iph ) CCP 3所在的GPIO端口将GPIOPinTypeTimer(CCP3_PORT、CCP3_PIN) /关联管脚设定为Timer功能将时间配置(time R1 _ base,timer_cfg_16_bit_pair|/timerb设置为16位PWMTIMER_CFG_B_PWM;以下/蜂鸣器发出指定频率的声音/usFreq为发音频率,取值(系统时钟/65536) 1 20000,单位: Hzvoidabuzzersound (unsignedshorusfreq )举止无
6、符号龙ul val;PS (PS=thesysclock/65536 ul )| (PS 20000 ) )举止buzzerQuiet ();以下else举止将GPIOPinTypeTimer(CCP3_PORT、CCP3_PIN) /相关管脚设定为Timer功能ulVal=TheSysClock/usFreq;设定TimerLoadSet(TIMER1_BASE,TIMER_B,ulVal) TimerB初始值设定TimerMatchSet(TIMER1_BASE、TIMER_B、ulVal/2) TimerB匹配值timer1_base,TIMER_B; /使能TimerB计数以下以下蜂鸣
7、器停止响。void buzzerQuiet(void )举止时间可撤销(time R1 _ base,TIMER_B) TimerB计数禁止GPIOPinTypeOut(CCP3_PORT,CCP3_ pin )将CCP 3管脚设置为GPIO输出将GPIOPinWrite(CCP3_PORT、CCP3_PIN、0x00) CCP3管脚输出设为低电平以下例程10.Timer PWM应用程序:蜂鸣器演奏曲程序列表1.10是Timer模块的16位PWM模式的应用,能驱动交流蜂鸣器演奏动人的乐曲化蝶 (乐谱参照图1.2 )。 “music.h”和“music.c”是演奏乐曲的司机。图1.2乐谱化蝶简谱
8、是大众化的音乐记谱方式,理解和把握比较容易。 可以认为乐谱(score )由几个基本的音符(note )单元构成。 一个音符是由音名和时间值构成的。 音名为低音、中音、高音,本质上是音符的发音频率。 在头文件“music.h”中,用L1L7、M1M7、H1H7定义了与低音、中音、高音相对应的发音频率。 时间是音符的发音时间的长度,有全音符、二分音符、四分音符等。 音符可以附加“符号点”,意味着时间值增加1/2,特别是在二分音符上附加符号点时,用“-”代替点。 请参见表1.26的说明。表1.26常见的简单音符的例子音符名字相对时间值5全音符叔叔5-二分音符三分之一5四分音符四分之一5八分音符八分
9、之一5十六分音符T/16战斗机5标点二分音符T/2 T/45.5标点四分音符T/4 T/85.5符号点八分音符T/8 T/16报头文件“music.h”定义了音符结构tNote,其中有两个数据成员:音名mName和时间mTime。 在c文件“music.c”中定义tNote型常数表MyScore ,保存从实际乐谱变换为tNote形式的数据。 如果有上述乐谱的基础知识,我们就能简单地编辑这个数据表。 例如音符“3”为“M3,T/4”,音符“3 .”为“M3,T/4 T/8”等。 “music.c”已经在数据表MyScore 中显示了乐谱化蝶开头的一部分音符转换结果,其馀部分请向有兴趣的读者补充。
10、程序列表1.10 Timer PWM应用程序:蜂鸣器演奏曲文件: main.c#include systemInit.h #include buzzer.h #include music.h /主函数(程序条目)PPS (PS )举止jtagWait (); 防止JTAG的故障很重要!时钟输入(); /时钟初始化:水晶振动,6MHzbuzzerInit (); /蜂鸣器初始化for (; (请参见)举止musicPlay ();sysctl delay (4000 * (thesysclock/3000 ) );以下以下文件: music.h#ifndef_music_h_1# define
11、_ _ music _ h _ 112222222222226/定义低音的音名(数值单位: Hz )#define L1 262 /c#define L2 294 /d#define L3 330 /e#define L4 349 /f#define L5 392 /g#define L6 440 /a1#define L7 494 /b1/定义中音音名#define M1 523 /c1#define M2 587 /d1#define M3 659 /e1#define M4 698 /f1#define M5 784 /g1#define M6 880 /a2#define M7 988
12、 /b2/定义高音的音名#define H1 1047 /c2#define H2 1175 /d2#define H3 1319 /e2#define H4 1397 /f2#define H5 1568 /g2#define H6 1760 /a3#define H7 1976 /b3/定义时间值单位,决定演奏速度(数值单位: ms )#define T 3600/定义音符结构typedef struct举止短名称; /音名:值L1L7、M1M7、H1H7分别表示低音、中音、高音/,取值0表示休止符短时间; /时值: t、T/2、T/4、T/8、T/16、T/32分别表示全音符,/二分音符
13、、四分音符、八分音符、取值0后演奏结束tNote/演奏曲子外部语音播放(void )#endif/music_h_1文件: music.c#include music.h #include buzzer.h #include systemInit.h /定义曲: 化蝶 (梁祝)const tNote MyScore =举止L3,T/4,L5,T/8 T/16,(l 6,T/16 ),M1,T/8 T/16,m 2,T/16,l 6,T/16,m 1,T/16,L5,T/8,M5,T/8 T/16,T/16,T/16,m 5,T/16,m 3,T/16,m 5,T/16,m 2,T/2,/请省略
14、后续乐曲数据,完全补充有兴趣的读者 0,0 /结束/演奏曲子语音播放(void )举止短I=0;for (; (请参见)举止if (myscore I .mtime=0)中断;buzzerSound(MyScorei.mName )sysctl delay (myscore I .mtime * (thesysclock/3000 ) );I;buzzerQuiet ();sysctl delay (10 * (thesysclock/3000 ) );以下以下移植到STM32F103 :Timer3部分将TIM3_CH2-PB5:PB5重新映射为PWM输出。/定义低音的音名(数值单位: Hz )#define L1 262#define L2 294#define L3 330#define L4 349#define L5 392#define L6 440#define L7 494/定义中音音名#define M1 523#define M2 587#define M3 659#define M4 698#define M5 784#define M6 880#define M7 988/定义高音的音名#define H1 1047#define H2 1175#define H3 1319#define H4 1397#define H5 1568
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026湖北武汉大学人民医院幼儿园教师招聘2人备考题库附答案详解(巩固)
- 2026福建福州市船政幼儿园教师招聘1人备考题库含答案详解(黄金题型)
- 2026浙江工业大学管理学院招聘科研助理1人备考题库(人才派遣B2岗)及答案详解(新)
- 2026广东深圳市罗湖区侨香实验学校招聘小学低段英语临聘教师备考题库含答案详解(综合卷)
- 2026浙江金华浦江县中医院招聘编外人员6人备考题库及答案详解(夺冠系列)
- 2026四川优广人力资源有限公司第三次招聘劳务外包人员1人备考题库及1套参考答案详解
- 2026广东佛山市第二人民医院服务中心招聘18人备考题库含答案详解(突破训练)
- 2026新疆和田人力资源管理服务中心有限责任公司招(竞)聘4人备考题库含答案详解(巩固)
- 活动课-我的家在日喀则教案
- 《西游记》导读课基于标准的教学设计
- 雷雨-剧本原文-高中语文雷雨剧本原文
- 某1.8万方反硝化深床滤池设计计算书
- 2024届浙江省名校协作体高三下学期开学联考物理试题及答案
- 2024年广东佛山市南海区大沥镇镇属企业招聘笔试参考题库含答案解析
- 100部经典好看韩国电影大全
- 新版医院住院病案首页
- 2023年华侨、港澳、台联考高考物理试卷(含解析)
- 2023年广东中山市文化广电旅游局所属事业单位(孙中山故居纪念馆)招考聘用笔试题库含答案解析
- 2023化工总控工(高级)技能理论考试核心题库500题(含各题型)
- 轮毂加工工艺规程及专用车夹具设计
- 售楼部装修施工方案设计
评论
0/150
提交评论