⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 buzzer.c

📁 IAR for ARM
💻 C
字号:
//  包含必要的头文件
#include <includes.h>


//  将较长的标识符定义成较短的形式
#define  SysCtlPeriEnable       SysCtlPeripheralEnable
#define  SysCtlPeriDisable      SysCtlPeripheralDisable
#define  GPIOPinTypeOut         GPIOPinTypeGPIOOutput


//  声明全局的系统时钟变量
unsigned long  TheSysClock;


/***************************************************************************************************
功能:蜂鸣器初始化
参数:无
返回:无
***************************************************************************************************/
void  BuzzerInit(void)
{
    SysCtlPeriEnable(CCP3_PERIPH);                              //  使能CCP3所在的GPIO端口
    GPIOPinTypeTimer(CCP3_PORT , CCP3_PIN);                     //  配置CCP3所在管脚为Timer功能

    SysCtlPeriEnable(SYSCTL_PERIPH_TIMER1);                     //  使能TIMER1模块

    TimerConfigure(TIMER1_BASE ,                                //  配置Timer1B为16位PWM
                   TIMER_CFG_16_BIT_PAIR | TIMER_CFG_B_PWM);
    TheSysClock  =  SysCtlClockGet();
}


/***************************************************************************************************
功能:蜂鸣器发出指定频率的声音
参数:usFreq是发声频率,取值20~20000(Hz)
返回:无
***************************************************************************************************/
void  BuzzerSound(unsigned short  usFreq)
{
    unsigned short  usVal;

    if ( (usFreq < 20 ) || (usFreq > 20000) )
    {
        BuzzerOff();
    }
    else
    {
        GPIOPinTypeTimer(CCP3_PORT , CCP3_PIN);                 //  配置CCP3所在管脚为Timer功能
        usVal  =  TheSysClock / usFreq;
        TimerLoadSet(TIMER1_BASE , TIMER_B , usVal);            //  设置TimerB初值,决定PWM周期
        TimerMatchSet(TIMER1_BASE , TIMER_B , usVal / 2);       //  设置TimerB匹配值,决定PWM占空比
        TimerEnable(TIMER1_BASE , TIMER_B);                     //  使能TimerB计数,PWM开始输出
    }
}


/***************************************************************************************************
功能:蜂鸣器停止发声
参数:无
返回:无
***************************************************************************************************/
void  BuzzerOff(void)
{
    TimerDisable(TIMER1_BASE , TIMER_B);                        //  禁止TimerB计数,PWM停止输出
    GPIOPinTypeOut(CCP3_PORT , CCP3_PIN);                       //  配置CCP3所在管脚为GPIO输出
    GPIOPinWrite(CCP3_PORT , CCP3_PIN , 0x00);                  //  使CCP3所在管脚输出低电平
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -