×
嵌入式 > 技术百科 > 详情

STM8S BEEP

发布时间:2020-06-15 发布时间:
|
C语言: Codee#12366

/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 实验平台 : ST 官方三合一套件 
+ 硬件     : STM8S105S6T6C
+ 开发平台 : IAR For STM8 1.10
+ 仿真器   : ST-Link
+ 日期     : 2010-7-30
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
#include "stm8s.h"

/*******************************************************************************
*                           ==启用外部晶振函数==
*******************************************************************************/
void HSE_CLK_INIT(void)
{
CLK_DeInit(); 
CLK_HSECmd(ENABLE);
while(SET != CLK_GetFlagStatus(CLK_FLAG_HSERDY));
CLK_SYSCLKConfig(CLK_PRESCALER_CPUDIV1);
CLK_ClockSwitchCmd(ENABLE); 
CLK_ClockSwitchConfig(CLK_SWITCHMODE_AUTO,CLK_SOURCE_HSE,DISABLE,CLK_CURRENTCLOCKSTATE_ENABLE);
}

/*******************************************************************************
*                         ==BEEP初始化函数==
* BEEP_DeInit();                                  --> 蜂鸣器寄存器初始化
* BEEP_Init(BEEP_FREQUENCY_1KHZ);                 --> 蜂鸣器震荡频率 1KHz
* BEEP_LSICalibrationConfig(LSI_FREQUENCY_MAX);   --> LSI 范围为 100000 ~ 200000 
*******************************************************************************/
void BEEP_INIT(void)
{
BEEP_DeInit();
BEEP_Init(BEEP_FREQUENCY_1KHZ);
BEEP_LSICalibrationConfig(LSI_FREQUENCY_MAX);
}

/*******************************************************************************
*                         ==I/O口初始化函数==
*******************************************************************************/
void PORTD_INIT(void)
{
GPIO_DeInit(GPIOD);
GPIO_Init(GPIOD , GPIO_PIN_0 | GPIO_PIN_2 | GPIO_PIN_3 , GPIO_MODE_OUT_PP_LOW_SLOW);
}

/*******************************************************************************
*                         ==延时函数==
*              不是精确延时
*******************************************************************************/
void Delay(unsigned int Xms)

    unsigned int i ; 
    while (Xms--) 
    {    
        i = 120; 
        while(i--); 
    } 
}

/*******************************************************************************
*                           ==Main函数==
*             一定要修改Option Byte AFR7选项为BEEP
*             开启BEEP后 系统始终运行着流水灯程序 证明蜂鸣器没有占用系统资源
*******************************************************************************/
void main(void)
{
HSE_CLK_INIT();      // 开启外部时钟
PORTD_INIT();        // 初始化端口
BEEP_INIT();         // 蜂鸣器初始化
BEEP_Cmd(ENABLE);    // 使能蜂鸣器

while(1)
{
    //==============流水灯==============//
    GPIO_WriteReverse(GPIOD , GPIO_PIN_0);
    Delay(2000);
    GPIO_WriteReverse(GPIOD , GPIO_PIN_2);
    Delay(2000);
    GPIO_WriteReverse(GPIOD , GPIO_PIN_3);
    Delay(2000);
    //==============流水灯==============//
}
}

 


 

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
FPGA及CPLD应用领域不断拓展