STM8L系统时钟及RTC设置

1 篇文章 0 订阅

单片机使用STM8L151C8T6,系统时钟设置,在数据手册RM0031中可以看出时钟树如下图所示:

在这里插入图片描述
1、如果不使用外部晶振(HSE)的话,系统复位之后默认使用内部的时钟(HSI)。
2、外部时钟如下进行配置

//外部时钟配置
void ClockInit(void)
{
    CLK_DeInit();                        
    CLK_HSICmd(ENABLE); //先配置内部高速时钟                
    CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSE);//时钟配置为外部时钟
    CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);//不分频
}

3、RTC设置代码如下:

void RTC_Config(void)
{
  RTC_InitTypeDef RTC_InitStr;
  RTC_TimeTypeDef RTC_TimeStr;
  RTC_DateTypeDef RTC_DateStr;
  
  CLK_LSEConfig(CLK_LSE_ON);//LSE时钟开启 外部晶振 32.768Khz
  while (CLK_GetFlagStatus(CLK_FLAG_LSERDY) == RESET);
  CLK_RTCClockConfig(CLK_RTCCLKSource_LSE, CLK_RTCCLKDiv_1);//选LSE 不分频
  
  CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE);//RTC时钟使能

  RTC_InitStr.RTC_HourFormat = RTC_HourFormat_24;
  RTC_InitStr.RTC_AsynchPrediv = 127;
  RTC_InitStr.RTC_SynchPrediv = 255;
  RTC_Init(&RTC_InitStr);//ck_spre 1Hz时钟 32768/128/256=1Hz
  
  RTC_TimeStructInit(&RTC_TimeStr);
  RTC_TimeStr.RTC_Hours = 00;
  RTC_TimeStr.RTC_Minutes = 00;
  RTC_TimeStr.RTC_Seconds = 00;
  RTC_SetTime(RTC_Format_BIN, &RTC_TimeStr);

  RTC_DateStructInit(&RTC_DateStr);
  RTC_DateStr.RTC_WeekDay = RTC_Weekday_Wednesday;
  RTC_DateStr.RTC_Date = 23;
  RTC_DateStr.RTC_Month = RTC_Month_September;
  RTC_DateStr.RTC_Year = 20;
  RTC_SetDate(RTC_Format_BIN, &RTC_DateStr);//2020-9-23 周三
}
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值