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

📄 buzzer.c

📁 EasyARM1138例程
💻 C
字号:
//  包含必要的头文件
#include  "Buzzer.H"
#include  "LM3S1138_PinMap.H"
#include  <hw_types.h>
#include  <hw_memmap.h>
#include  <hw_sysctl.h>
#include  <hw_gpio.h>
#include  <hw_timer.h>
#include  <sysctl.h>
#include  <gpio.h>
#include  <timer.h>


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


//  声明全局的系统时钟变量
extern  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);
}


/***************************************************************************************************
功能:蜂鸣器发出指定频率的声音
参数:usFreq是发声频率,取值 (系统时钟/65536)+1 ~ 20000,单位:Hz
返回:无
***************************************************************************************************/
void  BuzzerSound(unsigned short  usFreq)
{
    unsigned long  ulVal;

    if ( (usFreq <= TheSysClock / 65536UL) || (usFreq > 20000) )
    {
        BuzzerOff();
    }
    else
    {
        GPIOPinTypeTimer(CCP3_PORT , CCP3_PIN);                 //  配置CCP3所在管脚为Timer功能
        ulVal  =  TheSysClock / usFreq;
        TimerLoadSet(TIMER1_BASE , TIMER_B , ulVal);            //  设置TimerB初值,决定PWM周期
        TimerMatchSet(TIMER1_BASE , TIMER_B , ulVal / 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 + -