1 STM32F103通用定时器PWM应用例程:蜂鸣器演奏乐曲 一.说明:本例程是将流明LM3SLib_Timer.pdf文档中的例程9及例程10(PWM应用:蜂鸣器演奏乐曲),移植到STM32F103上。 二.流明LM3SLib_Timer.pdf例程9及例程10的拷贝: 例程9. Timer PWM应用:蜂鸣器发声 如图 1.1 所示,为 EasyARM1138 开发板上的蜂鸣器驱动电路。蜂鸣器类型是交流蜂鸣器,也称无源蜂鸣器,需要输入一列方波才能鸣响,发声频率等于驱动方波的频率。 图 1.1 蜂鸣器驱动电路 程序清单1.9是Timer模块16位PWM模式的一个应用,可以驱动交流蜂鸣器发声,运行后蜂鸣器以不同的频率叫两声。其中"buzzer.h"和"buzzer.c"是蜂鸣器的驱动程序,仅有3个驱动函数,用起来很简捷。 程序清单1.9 Timer PWM 应用:蜂鸣器发声 文件:main.c #include "systemInit.h" #include "buzzer.h" // 主函数(程序入口) int main(void) { jtagWait(); // 防止JTAG失效,重要! clockInit(); // 时钟初始化:晶振,6MHz buzzerInit(); // 蜂鸣器初始化 buzzerSound(1500); // 蜂鸣器发出1500Hz声音 SysCtlDelay(400* (TheSysClock / 3000)); // 延时约400ms buzzerSound(2000); // 蜂鸣器发出2000Hz声音 SysCtlDelay(800* (TheSysClock / 3000)); // 延时约800ms buzzerQuiet( ); // 蜂鸣器静音 for (;;) { } } 文件:buzzer.h #ifndef __BUZZER_H__ #define __BUZZER_H__ // 蜂鸣器初始化 extern void buzzerInit(void); // 蜂鸣器发出指定频率的声音 extern void buzzerSound(unsigned short usFreq); // 蜂鸣器停止发声 extern void buzzerQuiet(void); 2 #endif // __BUZZER_H__ 文件:buzzer.c #include "buzzer.h" #include
#include #include #include #include #define PART_LM3S1138 #include #define SysCtlPeriEnable SysCtlPeripheralEnable #define GPIOPinTypeOut GPIOPinTypeGPIOOutput // 声明全局的系统时钟变量 extern unsigned long TheSysClock; // 蜂鸣器初始化 void buzzerInit(void) { SysCtlPeriEnable(SYSCTL_PERIPH_TIMER1); // 使能TIMER1模块 SysCtlPeriEnable(CCP3_PERIPH); // 使能CCP3所在的GPIO端口 GPIOPinTypeTimer(CCP3_PORT, CCP3_PIN); // 设置...