前段时间都是自己裸机(自己写寄存器)编的程序,以前接触过
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);
}
}