前段时间都是自己裸机(自己写寄存器)编的程序,曾经触摸过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);
}
}
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/jichu/257864.html