OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 7168|回复: 10

[F1开发板通用] 分享:mini板子RTC闹钟实验和战舰RTC闹钟实验

[复制链接]

57

主题

1680

帖子

3

精华

资深版主

Rank: 8Rank: 8

积分
4306
金钱
4306
注册时间
2018-6-30
在线时间
808 小时
发表于 2018-7-19 20:08:33 | 显示全部楼层 |阅读模式
本帖最后由 1208 于 2018-12-19 12:34 编辑

mini板子RTC闹钟实验:当到达指定的时间闹钟灯就会亮,
按键KEY0按下灯就会熄灭,如果按键没按,灯10s后也会自动熄灭
战舰板子RTC闹钟实验:当到达指定的时间闹钟就会响,
按键KEY0按下灯就会停止,如果按键没按,灯10s后也会自动停止

1)RTC闹钟时钟实验  每次使用都要修改指定的后备寄存器中读出数据0x5050,重新下载
才能显示闹钟,让灯亮起来。(重新复位后是不能使用闹钟的)
if (BKP_ReadBackupRegister(BKP_DR1) != 0x5051) //每次重新下载要改
2)闹钟会在10s后响应   
        RTC_Set(2018,4,8,21,34,50);  //设置时间
        RTC_WaitForLastTask();
        RTC_WaitForSynchro();
        ALR_Set(2018,4,8,21,35,0);    //设置闹钟
按键KEY0按下灯就会熄灭,如果按键没按,灯10s后也会自动熄灭
        if(KEY0==0)
        {
            BEEP = 0;
        }
       if(count>20)            //只会亮10s,跟时钟是同步走的
        {
            BEEP = 0;
            count = 0 ;
        }
3)要开启闹钟相应,则要先启动中断线17,下面中文参考手册17的资料
     若ALRF=1且ALRIE=1,则允许产生RTC全局中断。如果在EXTI控制器中允许产生EXTI线 17
中断,则允许产生RTC全局中断和RTC闹钟中断。
     若ALRF=1,如果在EXTI控制器中设置了EXTI线 17的中断模式,则允许产生RTC闹钟中断;
如果在EXTI控制器中设置了EXTI线 17的事件模式,则这条线上会产生一个脉冲(不会产生RTC
闹钟中断)
    EXTI_ClearITPendingBit(EXTI_Line17);
    EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
    EXTI_InitStructure.EXTI_Line = EXTI_Line17;
    EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
    EXTI_InitStructure.EXTI_LineCmd = ENABLE;
    EXTI_Init(&EXTI_InitStructure);
//闹钟中断
void RTCAlarm_IRQHandler(void)
{
    if(RTC_GetITStatus(RTC_IT_ALR) != RESET)
    {        
        BEEP = 1;
    }   
        EXTI_ClearITPendingBit(EXTI_Line17);
        RTC_WaitForLastTask();
        RTC_ClearITPendingBit(RTC_IT_ALR);
        RTC_WaitForLastTask();
}
4)切记要开中断,否则闹钟不会相应
    RTC_ITConfig(RTC_IT_SEC|RTC_IT_ALR, ENABLE);        //使能RTC秒中断和闹钟中断
我将时间的计数放在秒中断里面RTC时钟中断,每秒可以触发一次,
这样做的目的是起到定时关掉闹钟的效果
extern int count;
void RTC_IRQHandler(void)
{
    if(RTC_GetITStatus(RTC_IT_SEC)!=RESET)
    {
        RTC_Get();
        count++;
    }   
        RTC_ClearITPendingBit(RTC_IT_OW|RTC_IT_SEC);
        RTC_WaitForLastTask();
}
5)声明闹钟结构体
_alr_obj ALR; //闹钟结构体
typedef struct
{
    vu8 year;
    vu8 month;
    vu8 day;
    vu8 hour;
    vu8 min;
    vu8 sec;
}_alr_obj;



ALIENTEK MINISTM32 实验13 RTC实时闹钟实验.zip

5.08 MB, 下载次数: 915

战舰: RTC闹钟实验.zip

5.22 MB, 下载次数: 447

业精于勤荒于嬉;行成于思毁于随!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2020-6-7
在线时间
2 小时
发表于 2020-6-9 16:30:35 | 显示全部楼层
大佬,能不能告诉我,战舰RTC闹钟实验这个如何添加多个闹钟呀
回复 支持 2 反对 0

使用道具 举报

160

主题

966

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2095
金钱
2095
注册时间
2014-3-7
在线时间
490 小时
发表于 2018-7-20 11:16:09 | 显示全部楼层
可以啊,学习
回复 支持 反对

使用道具 举报

57

主题

1680

帖子

3

精华

资深版主

Rank: 8Rank: 8

积分
4306
金钱
4306
注册时间
2018-6-30
在线时间
808 小时
 楼主| 发表于 2018-7-20 18:10:54 | 显示全部楼层

嗯嗯!还请多多指教。
业精于勤荒于嬉;行成于思毁于随!
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2020-3-21
在线时间
21 小时
发表于 2020-3-26 13:45:15 | 显示全部楼层
您好,请问一下,ALR_Set写在主函数中为什么不起作用呢?
回复 支持 反对

使用道具 举报

0

主题

8

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2020-3-21
在线时间
21 小时
发表于 2020-3-26 16:24:21 | 显示全部楼层
林中明月间 发表于 2020-3-26 13:45
您好,请问一下,ALR_Set写在主函数中为什么不起作用呢?

我知道了。只要在RTC_Init中else判断里使能闹钟中断就可以了,
  1. RTC_ITConfig(RTC_IT_SEC|RTC_IT_ALR, ENABLE);  //使能闹钟和秒中断
复制代码
。这样就可以在主函数里设置了,也可以使用usmart设置了。
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2019-12-13
在线时间
6 小时
发表于 2020-4-11 14:54:16 | 显示全部楼层
你好,大神请问为什么我下载你的战舰版实验程序,可是我的开发板蜂鸣器不响呢
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
19
金钱
19
注册时间
2019-12-13
在线时间
6 小时
发表于 2020-4-11 15:41:54 | 显示全部楼层
1208 发表于 2018-7-20 18:10
嗯嗯!还请多多指教。

大神,能不能加个好友,向您请教一下
回复 支持 反对

使用道具 举报

4

主题

62

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
497
金钱
497
注册时间
2022-4-4
在线时间
66 小时
发表于 2022-9-29 09:24:30 | 显示全部楼层
值得学习
回复 支持 反对

使用道具 举报

4

主题

62

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
497
金钱
497
注册时间
2022-4-4
在线时间
66 小时
发表于 2022-9-29 09:29:48 | 显示全部楼层
大佬,不明白这俩句话是什么意思                RTC_WaitForLastTask();
                                                                RTC_WaitForSynchro();
我删除了,程序也能运行
回复 支持 反对

使用道具 举报

17

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
172
金钱
172
注册时间
2014-6-4
在线时间
19 小时
发表于 2024-2-26 14:31:37 | 显示全部楼层
兄弟  有寄存器方式的吗
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-24 21:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表