新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > STM8S蜂鳴器的應(yīng)用

STM8S蜂鳴器的應(yīng)用

作者: 時間:2016-11-26 來源:網(wǎng)絡(luò) 收藏
前段時間都是自己裸機(jī)(自己寫寄存器)編的程序,以前接觸過STM32知道有STM公司有固件函數(shù)庫,可以使用固件函數(shù)庫來操作,在使用庫文件中最頭疼的問題就是H文件的調(diào)用,所以一直沒有使用,一時心血來潮決定在STM8S中試試,在網(wǎng)上參考了一下,找到官網(wǎng)上的固件函數(shù)庫,添加頭文件,對工程進(jìn)行一些列的配置,還好好使了。呵呵!

本文引用地址:http://m.butianyuan.cn/article/201611/321592.htm

#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();//設(shè)置外部時鐘
GPIO_INIT();//初始化IO

FLASH_INIT();//初始化FLASH

//PD4第二功能腳不是beep功能,就強(qiáng)制寫成beep
if(FLASH_ReadOptionByte(0x4803) != 0x807F)
{
FLASH_ProgramOptionByte(0x4803,0x80);//將PD4的第二功能腳寫成beep
WWDG->CR = 0x80;//復(fù)位stm8
}

//BEEP_LSICalibrationConfig(128000);
BEEP_LSICalibrationConfig(95000);//此處修改輸入?yún)?shù)**************************************************
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);
}
}



關(guān)鍵詞: STM8S蜂鳴

評論


技術(shù)專區(qū)

關(guān)閉