STM8L151XX参考程序

#include "stm8l15x_conf.h"
#include "system_init.h"

/*--------------------- 定时器2参数定义 ------------------------------------*/

#define HSI_CLK 1

/*******************************************************************************
* 名称: Tim2_Timer_Init
* 功能: TIM2定时器初始化操作
* 形参: 无
* 返回: 无
* 说明: TIM2的时基定时时间计算
使用外部24MHz:
BaseTime_Max=1/(24000000/32768)*(65535+1)=89.478s
BaseTime_Min=1/24000000*(1+1)=0.083us
使用内部部16MHz
BaseTime_Max=1/(16000000/32768)*(65535+1)=134.217s
BaseTime_Min=1/16000000*(1+1)=0.125us
如果使用外部24MHz晶振则添加#define HSE_CLK,把#define HSI_CLK注释起来
如果使用外部24MHz晶振则添加#define HSI_CLK,把#define HSE_CLK注释起来
******************************************************************************/

//**************************时钟初始化****************************************************
void RCC_Configuration16M(void)
{
CLK_DeInit();
CLK_HSICmd(ENABLE);
CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSI);
CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);
}

void Timer2_Init(void)
{
/* Enable TIM2 clock */
CLK_PeripheralClockConfig(CLK_Peripheral_TIM2, ENABLE);

#ifdef HSI_CLK
/*BaseTime=1/(16000000/16)*(999+1)=1ms*/
TIM2_TimeBaseInit(TIM2_Prescaler_16 ,TIM2_CounterMode_Up,9999);
TIM2_PrescalerConfig(TIM2_Prescaler_16,TIM2_PSCReloadMode_Immediate);
#endif

#ifdef HSE_CLK
/*BaseTime=1/(24000000/8)*(2999+1)=1ms*/
TIM2_TimeBaseInit(TIM2_Prescaler_8 ,29999);
TIM2_PrescalerConfig(TIM2_Prescaler_8,TIM2_PSCReloadMode_Immediate);
#endif

TIM2_ARRPreloadConfig(ENABLE);
TIM2_ITConfig(TIM2_IT_Update , ENABLE);
TIM2_Cmd(ENABLE);
}


#include "stm8l15x_conf.h"
#include "usart_init.h"

//**********************************************************************
void UART_Init(void)
{
USART_Configuration(); //
DelayMs(20);
}
//*******************************************************************************
void USART_Configuration(void)
{
GPIO_Init(GPIOC,GPIO_Pin_2,GPIO_Mode_In_PU_No_IT); //串口接收
GPIO_Init(GPIOC,GPIO_Pin_3,GPIO_Mode_Out_PP_High_Slow); //串口发送

//配置串口时钟
CLK_PeripheralClockConfig(CLK_Peripheral_USART1, ENABLE);

USART_DeInit(USART1); /* 将寄存器的值复位 */

USART_Init(USART1,(u32)115200, USART_WordLength_8b, USART_StopBits_1,USART_Parity_No , (USART_Mode_TypeDef)(USART_Mode_Tx | USART_Mode_Rx));
enableInterrupts();
USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);
USART_Cmd(USART1,ENABLE);
}
//*******************************************************************************
void SendByte(u8 data)
{
USART_SendData8(USART1,data);
/* 等待传输结束 */
while (USART_GetFlagStatus(USART1,USA

RT_FLAG_TC) == RESET);
}

//*******************************************************************************
void SendString(u8 *p)
{
u8 sendbuf = 0;
while (p[sendbuf] != '\0')
{
SendByte(p[sendbuf]);
sendbuf ++;
}
}
//*******************************************************************************
void SendStringN(u8 *p, u16 num)
{
u16 cout;
for(cout = 0; cout < num; cout++)
{SendByte(p[cout]);}
}











相关文档
最新文档