在研究让用户可以通过矩阵键盘输入更改闹钟时,遇到数值传递后没有触发闹钟中断函数的情况。

经过反复测试记录下需要的步骤。

RTC闹钟设置步骤为:

//配置RTC闹钟A
void RTC_SetAlarm_AInit(void)
{
    RTC_AlarmTypeDef  RTC_AlarmStruct;
    RTC_TimeTypeDef   RTC_AlarmTime;
    EXTI_InitTypeDef   EXTI_InitStructure;
    NVIC_InitTypeDef   NVIC_InitStructure;
    
    //1、关闭闹钟:
    RTC_AlarmCmd(RTC_Alarm_A,DISABLE);

//2、闹钟时间设置
    RTC_AlarmTime.RTC_H12        = RTC_H12_AM;    //上午
    RTC_AlarmTime.RTC_Hours     = 1;    //时
    RTC_AlarmTime.RTC_Minutes    = 19;    //分
    RTC_AlarmTime.RTC_Seconds    = 0;    //秒
    
    RTC_AlarmStruct.RTC_AlarmTime            = RTC_AlarmTime;                                            //时间设置
    RTC_AlarmStruct.RTC_AlarmMask            = RTC_AlarmMask_None;                                    //无掩码位,则表示按实际时间响应闹钟
    RTC_AlarmStruct.RTC_AlarmDateWeekDaySel = RTC_AlarmDateWeekDaySel_Date;    //按日期响应
    RTC_AlarmStruct.RTC_AlarmDateWeekDay    = 11;                                                        //2号 
    //3、配置闹钟参数:
    RTC_SetAlarm(RTC_Format_BIN, RTC_Alarm_A, &RTC_AlarmStruct);

EXTI_InitStructure.EXTI_Line     = EXTI_Line17;            //中断线17
    EXTI_InitStructure.EXTI_Mode     = EXTI_Mode_Interrupt;    //中断模式
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;  //选择上升沿触发
    EXTI_InitStructure.EXTI_LineCmd = ENABLE;                //中断线使能
    //4、外部中断事件控制器初始化
    EXTI_Init(&EXTI_InitStructure);

NVIC_InitStructure.NVIC_IRQChannel                      = RTC_Alarm_IRQn;  //选择中断通道 在stm32f4xx.h中查找
    NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;            //抢占优先级
    NVIC_InitStructure.NVIC_IRQChannelSubPriority          = 11;            //响应优先级
    NVIC_InitStructure.NVIC_IRQChannelCmd                  = ENABLE;        //通道使能
    NVIC_Init(&NVIC_InitStructure);

//5、配置为闹钟A中断,启用指定的RTC中断。
    RTC_ITConfig(RTC_IT_ALRA, ENABLE);    
    //6、开启闹钟:
    RTC_AlarmCmd(RTC_Alarm_A,ENABLE);

}

而二次设置闹钟时若要让新的闹钟时间仍然触发闹钟中断。

至少需要:

RTC_AlarmTypeDef  RTC_AlarmStruct;
RTC_TimeTypeDef   RTC_AlarmTime;
    
//1、关闭闹钟:
RTC_AlarmCmd(RTC_Alarm_A,DISABLE);
//2、闹钟时间设置
RTC_AlarmTime.RTC_H12        = RTC_H12_AM;    //上午
RTC_AlarmTime.RTC_Hours     = 1;    //时
RTC_AlarmTime.RTC_Minutes    = 24;    //分
RTC_AlarmTime.RTC_Seconds    = 0;    //秒
RTC_AlarmStruct.RTC_AlarmTime            = RTC_AlarmTime;                                            //时间设置
RTC_AlarmStruct.RTC_AlarmMask            = RTC_AlarmMask_None;                                    //无掩码位,则表示按实际时间响应闹钟
RTC_AlarmStruct.RTC_AlarmDateWeekDaySel = RTC_AlarmDateWeekDaySel_Date;    //按日期响应
RTC_AlarmStruct.RTC_AlarmDateWeekDay    = 11;                                                        //11号 
//3、配置闹钟参数:
RTC_SetAlarm(RTC_Format_BIN, RTC_Alarm_A, &RTC_AlarmStruct);
    
//4、开启闹钟:
RTC_AlarmCmd(RTC_Alarm_A,ENABLE);

闹钟数值修改必须先关闭闹钟,且同时需要同时设置时间和日期,最后再次开启闹钟。

STM32F407ZET6的RTC闹钟二次设置笔记相关推荐

  1. GD32F4—RTC闹钟及自动唤醒中断配置详解

    GD32F4-RTC闹钟及自动唤醒中断配置详解 一.简介 二.框图 三.RTC 初始化和配置 一.简介 GD32F4x的RTC例程网上资源较少,详细阅读用户手册后做出如下配置.RTC模块提供了一个包含 ...

  2. STM32CubeMX(stm32F030C8T6) 之RTC闹钟唤醒停机模式-STM32开发实战 (2)

    一.概述 本例程是用STOP休眠模式,用RTC的周期性自动唤醒功能来唤醒芯片. 根据手册的说明:这里有个可编程的可自动重装的向下计数器,按照相应的时钟频率赋予适当的值,每当向下计数到0时便产生一个唤醒 ...

  3. stm32独立看门狗和rtc闹钟

    独立看门狗 1.独立看门狗概述 在由单片机构成的微型计算机系统中,由于单片机的工作常常会受到来自外界电磁场的干扰,造成程序的跑飞,而陷入死循环,程序的正常运行被打断,由单片机控制的系统无法继续工作,会 ...

  4. STM32:RTC闹钟唤醒

    想使用闹钟唤醒功能使系统从待机下唤醒,遇到一个问题:使用闹钟唤醒就不能使用wakeup pin唤醒.二者只能取其一. 此问题解决,画了个板子wakeup pin 接下拉电阻解决. 写新代码时候遇到一个 ...

  5. CM3计算板RTC闹钟唤醒系统

    1.前言 一个周期性控制系统的核心为CM3计算板,在电池供电情况下要求尽可能提高使用时长.由于系统空闲时长较多,因此在考虑低功耗的情况下将系统关机以进一步降低功耗.需要注意的是,系统关机后需要在指定时 ...

  6. STM32HAL库RTC闹钟事件

    最近遇到stm32f系列看门狗不能关闭的事情,需要开启RTC闹钟定时唤醒喂狗.这里给RTC闹钟打一个标签把,我设置为每20秒开启一次闹钟.  首先是HAL库的配置 配置时钟: 选择下载方式 选择时钟和 ...

  7. STM32F030的低功耗案例(RTC闹钟中断定时唤醒喂狗+按键外部中断唤醒)

    最近使用到低功耗方案,采用的是STM32F030C8T6芯片,由于任务开启了看门狗,进入休眠后(采用的是STOP模式),需要及时喂狗,故而使用RTC闹钟中断定时唤醒来喂狗. 对比三种休眠模式:就设备的 ...

  8. stm32单片机实现多个闹钟_STM32实现对RTC闹钟唤醒的设计

    工程中用到低功耗的控制,本来想使用待机模式,后来发现待机后所有IO口为高阻态,这样对于一些IO口控制的外设有些不妥,想过外部上拉一个电阻可是功耗不好控制放弃该方案选用停止模式.停止模式后IO口保持停止 ...

  9. STM32的RTC闹钟中断 总算整明白了

    转载:http://www.openedv.com/posts/list/22055.htm STM32的RTC闹钟中断 总算整明白了 现在用到了STM32的闹钟中断 去唤醒停机模式下的系统 看STM ...

最新文章

  1. CentOS包管理器yum
  2. spring 依赖注入
  3. 一行代码,搞定浏览器数据库 IndexedDB
  4. java基础学习,一些零散的笔记之内部类
  5. Linux查看文件夹大小的相关命令
  6. 前端学习(1269):axios的拦截器
  7. 笔记-Microsoft SQL Server 2008技术内幕:T-SQL语言基础-02 单表查询
  8. git bitbucket_如何在Bitbucket上创建新的Git存储库并查看提交的对象
  9. oracle试图怎么使用,oracle 视图的介绍和使用
  10. MSSQL 2000更改表和存储过程的所有者
  11. day68_淘淘商城项目_01
  12. 交换排序图解_动画图解十个经典排序算法
  13. 【ANSYS命令流】Workbench中施加流体渗透压力载荷(超详细)
  14. 18、HX1838红外遥控模块控制led
  15. 如何获取 iOS 设备 UDID?
  16. Solr搜索引擎原理
  17. 解读京东“拉黑门”:被拐弯的真相
  18. 红光光浴到底有没有用#大健康#红光光浴#红光#种光光学
  19. 豫让刺杀赵襄子故事原文/白话文翻译?士为知己者死,女为说己者容出自哪?
  20. AtCoder Beginner Contest 167 F.Bracket Sequencing

热门文章

  1. linux加载的驱动无法卸载,Linux驱动模块卸载后不能再加载、驱动不能卸载的问题(转)...
  2. Excel实现自动显示日期且不自动改变
  3. Eolink 11月企业与产品动态速览!
  4. 麒麟linux代码行界面颜色,查看“麒麟”的源代码
  5. Ubuntu16.06 单Nvidia显卡 深度学习运行时 界面卡顿(刷新慢)的解决方法
  6. dq坐标系下无功功率表达式_基于瞬时电流分解的谐波电流检测方法研究
  7. 操作Python列表Ⅰ
  8. 电脑卡,电脑比较卡问题都出在这里,怎么解决电脑卡顿方法
  9. MYSQL登录遇到的问题:解决ERROR 2003 (HY000): Can‘t connect to MySQL server on ‘localhost:3306‘(10061)
  10. 推荐一款好用的GIF录屏软件(ScreenToGif)