OpenEdv-开源电子网

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

允许闹钟中断与闹钟中断标志的关系,允许中断与中断标志位的关系

[复制链接]

6

主题

25

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
217
金钱
217
注册时间
2013-10-25
在线时间
44 小时
发表于 2015-9-1 10:50:14 | 显示全部楼层 |阅读模式
在写闹钟中断的时候与到这个问题,看了原子哥战舰版综合试验的例程。对于这问题,我也困惑了很久!
这个帖子也提及过:http://www.openedv.com/posts/list/9985.htm,代码中没有设置闹钟中断,也没有闹钟中断服务程序,只有秒中断设置和秒中断服务程序,但闹钟还是被执行了。
寄存器RTC_CRL,ALRF:闹钟标志 (Alarm flag)
当32位可编程计数器达到RTC_ALR寄存器所设置的预定值,此位由硬件置’1’。如果RTC_CRH寄存器中ALRIE=1,则产生中断。此位只能由软件清’0’。对此位写’1’是无效的。
是不是可以理解成:即使不设置“允许闹钟中断”,中断标志位也可以被置“1”,因为例程中也没有执行闹钟中断,只是执行了秒中断,在执行秒中断时,执行了
if(RTC->CRL&0x0002)//闹钟中断
{
    RTC->CRL&=~(0x0002); //清闹钟中断  
    if(alarm.weekmask&(1<<calendar.week))
    {
        alarm.ringsta|=1<<7;//标记为闹铃状态.
        //printf("Alarm!\n");   
    }
    calendar_alarm_init(&alarm);//重新设置下一次闹铃
}
这条判断语句,所以当32位可编程计数器达到RTC_ALR寄存器所设置的预定值,此位由硬件置’1’,if()就会被执行。这样闹钟程序就会被执行。
不知是否可以这样理解,贴出来,看看大家的看法。

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-9-1 21:53:50 | 显示全部楼层
对的,标志位的设置,是和你开不开中断都会进行的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-15 22:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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