登录/注册

stm32f103rtc闹钟

更多

在STM32F103系列微控制器中,配置RTC闹钟需要以下步骤:

1. 初始化RTC时钟源

首先确保RTC时钟源已配置(通常使用外部32.768kHz晶振或内部LSI):

// 在STM32CubeMX中配置或手动启用:
RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);
PWR_BackupAccessCmd(ENABLE);  // 允许访问备份域
RCC_LSEConfig(RCC_LSE_ON);    // 启用LSE晶振
while (!RCC_GetFlagStatus(RCC_FLAG_LSERDY)); // 等待时钟就绪
RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE); // 选择LSE作为RTC时钟
RCC_RTCCLKCmd(ENABLE);        // 启用RTC时钟

2. 配置RTC时间和日期

RTC_TimeTypeDef sTime = {0};
RTC_DateTypeDef sDate = {0};

// 设置时间(示例:12:30:00)
sTime.RTC_Hours = 12;
sTime.RTC_Minutes = 30;
sTime.RTC_Seconds = 0;
HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BIN);

// 设置日期(示例:2023年10月1日)
sDate.RTC_Year = 23;
sDate.RTC_Month = 10;
sDate.RTC_Date = 1;
HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BIN);

3. 配置闹钟

RTC_AlarmTypeDef sAlarm = {0};
sAlarm.AlarmTime.RTC_Hours = 12;
sAlarm.AlarmTime.RTC_Minutes = 30;
sAlarm.AlarmTime.RTC_Seconds = 5;  // 12:30:05触发
sAlarm.Alarm = RTC_ALARM_A;        // 使用Alarm A
sAlarm.AlarmMask = RTC_ALARMMASK_DATEWEEKDAY;  // 忽略日期匹配
sAlarm.AlarmSubSecondMask = RTC_ALARMSUBSECONDMASK_SS14_15;
sAlarm.AlarmDateWeekDaySel = RTC_ALARMDATEWEEKDAYSEL_DATE;
sAlarm.AlarmDateWeekDay = 1;       // 日期1号(可忽略)
sAlarm.AlarmCmd = ENABLE;          // 启用闹钟

HAL_RTC_SetAlarm_IT(&hrtc, &sAlarm, RTC_FORMAT_BIN); // 使能中断

4. 中断处理

// 在stm32f1xx_it.c中添加中断处理
void RTC_IRQHandler(void) {
  HAL_RTC_AlarmIRQHandler(&hrtc);
}

// 实现回调函数
void HAL_RTC_AlarmAEventCallback(RTC_HandleTypeDef *hrtc) {
  // 这里写入闹钟触发后的处理代码
  // 例如翻转LED、发送信号等
}

5. 常见问题排查

闹钟匹配模式(AlarmMask)选项:

RTC_ALARMMASK_NONE         // 完全匹配
RTC_ALARMMASK_SECONDS      // 忽略秒
RTC_ALARMMASK_MINUTES      // 忽略分钟
RTC_ALARMMASK_HOURS        // 忽略小时
RTC_ALARMMASK_DATEWEEKDAY  // 忽略日期
RTC_ALARMMASK_ALL          // 每秒触发

建议使用STM32CubeMX生成初始化代码,再手动添加闹钟配置部分。调试时可通过HAL_RTC_GetTime()函数读取当前RTC时间验证配置是否正确。

STM32F103VET6

1970-01-01 08:00:00 至 1970-01-01 08:00:00

STM32F103RCT6

1970-01-01 08:00:00 至 1970-01-01 08:00:00

STM32F103实现简易闹钟小程序的过程分享

前言开发板:正点原子 STM32F103 精英版语言:C语言开发环境:Keil5使用了 KEY LED LCD RTC FLASH(用于存储闹钟

2022-01-18 07:26:52

AN2604_使用STM32F101xx和STM32F103xx进行RTC校准

AN2604_使用STM32F101xx和STM32F103xx进行RTC校准

资料下载 俞舟群 2022-11-21 08:11:29

STM32CubeMX | 基于STM32使用HAL库驱动RTC时钟及闹钟功能

于周期性低功耗的需求,例如让RTC闹钟提醒事件的中断唤醒处于低功耗模式的单片机,让单片机采集完数据之后再次进入低功耗,这样周期执行以达到省电的目的。)(一)工程配置我使用

资料下载 王强 2021-12-06 09:21:15

STM32CubeMX | 40 - 实时时钟RTC的使用(日历和闹钟

STM32CubeMX | 40 - 实时时钟RTC的使用(日历和闹钟)

资料下载 李娜 2021-11-23 18:06:59

基于STM32f103的FFT频率测试程序下载

基于STM32f103的FFT频率测试程序下载

资料下载 shyshyshy 2021-08-02 10:07:20

基于ARM的32位MCU芯片STM32F103x4/103x6

基于ARM的32位MCU芯片STM32F103x4/103x6

资料下载 jf_42320578 2021-05-21 15:32:12

STM32使用HAL库驱动RTC时钟

于周期性低功耗的需求,例如让RTC闹钟提醒事件的中断唤醒处于低功耗模式的单片机,让单片机采集完数据之后再次进入低功耗,这样周期执行以达到省电的目的。)(一)工程配置我使用

2021-08-18 06:39:24

STM32F103上的RTC闹钟中断功能以及用闹钟中断唤醒STM32的待机模式

RTC代表的是实时时钟的意思。因为它提供的时钟基准比较准确所以用处还是很多的。本文章主要讲解基于STM32F103上的RTC

2021-08-13 07:29:06

如何去实现一种基于STM32F103RC的RTC定时闹钟唤醒系统的设计

如何去实现一种基于STM32F103RC的RTC定时闹钟唤醒系统的设计?如何去编写其代码?

2021-08-11 07:19:31

基于STM32F103RC由RTC定时闹钟唤醒系统

本文章基于STM32F103RC;在开启独立看门狗的状态下,进入停机模式,由RTC定时闹钟唤醒系统。直接上代码:#include "m

2021-07-30 06:14:03

STM32 RTC闹钟的中断和唤醒待机模式

_GetITStatus(RTC_IT_ALR)!=RESET) //是否闹钟中断发生 { printf("THE ALARM  READY =%d \r\n",

2021-07-23 10:04:38

浅谈STM32_RTC闹钟

STM32_RTC闹钟

2020-04-08 11:14:22

STM32F10x_ RTC日历

STM32F10x_RTC日历

2020-03-25 11:39:50

7天热门专题 换一换
相关标签