微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > STM8S蜂鸣器的应用

STM8S蜂鸣器的应用

时间:11-26 来源:互联网 点击:
前段时间都是自己裸机(自己写寄存器)编的程序,以前接触过STM32知道有STM公司有固件函数库,可以使用固件函数库来操作,在使用库文件中最头疼的问题就是H文件的调用,所以一直没有使用,一时心血来潮决定在STM8S中试试,在网上参考了一下,找到官网上的固件函数库,添加头文件,对工程进行一些列的配置,还好好使了。呵呵!

#include "stm8s.h"
#include "stm8s_beep.h"
#include "stm8s_flash.h"
#include "stm8s_clk.h"
#include "stm8s_gpio.h"



#define BEEP_PORT GPIOD
#define BEEP_PIN GPIO_PIN_4

//注意,使用本程序前需要使用
//st visual programmer 把 Option Bytes 里
//AFR7改为"Port D4 Alternate Function = Beep",否则没有声音
//由于新增了在程序里修改AFR7改为"Port D4 Alternate Function = Beep"

//Fcpu = 4MHz/1 = 4MHz

void delay_ms(u16 time)
{
u16 i;
for(;time>0;time--)
for(i=0;i<670;i++); //241
}

void FLASH_INIT(void)
{
FLASH_DeInit();
FLASH_Unlock(FLASH_MEMTYPE_DATA);
FLASH_SetProgrammingTime(FLASH_PROGRAMTIME_STANDARD);
}

void CLK_INIT(void)
{
CLK_DeInit();
//CLK_HSECmd(ENABLE);

CLK_HSICmd(ENABLE);


CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIdiv4);


CLK_ClockSecuritySystemEnable();
}

void GPIO_INIT(void)
{
GPIO_DeInit(GPIOA);
GPIO_DeInit(GPIOB);
GPIO_DeInit(GPIOC);
GPIO_DeInit(GPIOD);
GPIO_DeInit(GPIOE);

}

void main ( void )
{

CLK_INIT();//设置外部时钟
GPIO_INIT();//初始化IO

FLASH_INIT();//初始化FLASH

//PD4第二功能脚不是beep功能,就强制写成beep
if(FLASH_ReadOptionByte(0x4803) != 0x807F)
{
FLASH_ProgramOptionByte(0x4803,0x80);//将PD4的第二功能脚写成beep
WWDG->CR = 0x80;//复位stm8
}

//BEEP_LSICalibrationConfig(128000);
BEEP_LSICalibrationConfig(95000);//此处修改输入参数**************************************************
BEEP_Init(BEEP_FREQUENCY_2KHZ);
BEEP_Cmd(ENABLE);

while(1)
{
//delay(1000);
delay_ms(500);
BEEP_Cmd(ENABLE);
//delay(1000);
delay_ms(500);
BEEP_Cmd(DISABLE);
}
}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top