打印

哪位能帮助我解释“RTC_CR的注”?

[复制链接]
3159|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
60岁老头|  楼主 | 2008-3-10 21:00 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    哪位能帮助我解释“RTC_CR的注”?参考手册的114页,以下是摘录:

1 任何标志位都将保持挂起状态,直到适当的RTC_CR 请求位被软件复位,表示所请求的中断已经被接受。
2 在复位时禁止所有中断,无挂起的中断请求,并且可以对RTC 寄存器进行写操作。
3 当APB1 时钟不运行时,OWF 、ALRF 、SECF 和RSF 位不被更新。
4 OWF、ALRF、SECF和RSF位只能由硬件置位,由软件来清零。
5 若ALRF=1 且ALRIE=1 ,则允许产生RTC 全局中断。如果在EXTI 控制器中
  允许产生EXTI 线17 中断,则允许产生RTC 全局中断和RTC 闹钟中断。
6 若ALRF=1 ,如果在EXTI 控制器中设置了EXTI 线17 的中断模式,则允许产
  生RTC 闹钟中断;如果在EXTI 控制器中设置了EXTI 线17 的事件模式,则这条线上会产生一个脉冲。( 不会产生RTC 闹钟中断)

    说实在话,我一头雾水。
    我请求帮助分析。
沙发
60岁老头|  楼主 | 2008-3-12 10:41 | 只看该作者

谢谢回应,再说几句.

  这里有一个翻译正确与否和原文正确与否的问题.当然,原文错误一般较少.

  “当APB1时钟不运行时,OWF 、ALRF 、SECF 和RSF位不被更新。”
很简单,没有APB1时,这几位的功能失效。”

  假设欲STANDBY唤醒,当然APB1时钟不运行,若ALRF不能变,如何唤醒?
  看来,“are not updated”或“更新”应不包括硬件的才是。
  

使用特权

评论回复
板凳
60岁老头|  楼主 | 2008-3-12 12:38 | 只看该作者

再问和RTC相关中断的问题

假如搞一个表:RTC相关中断的必要条件表

中断名称              产生中断的必要条件
RTC_IRQHandler        ALRIE=ALRF=1 
RTCAlarm_IRQHandler   ALRIE=ALRF=1,且使能EXTI17


   那么,OWF,SECF和OWIE,SECIE应该出现在表的何处?
   请明示,RTC溢出中断和秒中断的必要条件.

使用特权

评论回复
地板
香水城| | 2008-3-12 12:44 | 只看该作者

谢谢补充

欲STANDBY唤醒,当然APB1时钟不运行,ALRF也不能被更新,此时唤醒是直接完成的而不通过ALRF。

请看第8.3.1节的框图中的阴影部分,截图如下:

使用特权

评论回复
5
60岁老头|  楼主 | 2008-3-12 13:29 | 只看该作者

改写我的话,咋说。


假设欲STOP_LP唤醒,当然APB1时钟不运行,若ALRF不能变,如何唤醒?
  看来,“are not updated”或“更新”应不包括硬件的才是。

使用特权

评论回复
6
香水城| | 2008-3-12 15:57 | 只看该作者

楼主的问题可以很清楚地通过这张图解答

从图中的编号②部分看,RTC可以向NVIC产生两路中断信号,一路是直接由RTC_Alarm提供,这一路(RTCAlarm_IRQHandler)不受ALRIE控制,它是通过EXTI17进入NVIC,这正是一楼所提到的注释中第5点的后半部分。

RTC向NVIC产生的另一路是3个条件的“或”,见图中编号①部分,这一路的每一个条件又分别由不同的使能位控制(SECIE、OWIE和ALRIE),综合起来看,这一路中断(RTC_IRQHandler)的条件是:
  ((SECF & SECIE) | (OWF & OWFIE) | (ALRF & ALRIE))

再看图中蓝色的框内是唤醒电路,这里清楚地显示RTC_Alarm不通过ALRF,也不通过NVIC,可以直接唤醒系统。这里还可以看到,当系统被RTC_Alarm唤醒时,ALRF是没有被置位。

使用特权

评论回复
7
60岁老头|  楼主 | 2008-3-12 19:03 | 只看该作者

乱了。

    我的意思是:
  1. “注5”中只强调ALRF和ALRIE会引起误解。好象“秒”和“溢出”的情况与其不同。 
  2. 把3楼的话,再列出,并小改一下:

/*假如搞一个表:RTC相关中断的必要条件表

中断名称              产生中断的“所有的”必要条件!!!
RTC_IRQHandler       (SECF&SECIE)|(OWF&OWFIE)|(ALRF&ALRIE) & ?? &??
RTCAlarm_IRQHandler   ?? & ?? &??


   那么,OWF,SECF和OWIE,SECIE应该出现在表的何处?
   请明示,RTC溢出中断和秒中断的必要条件.         */
  
   这些问号是什么?共有几个“控制开关”

  3. NVIC是Cortex_M3的核心,目前用户掌握的不多,ST又几乎没有自己相应的文献,好象这是ARM的事.这样对推广自己的IC极其不利.

   ST的文宣基本上是“块”状的,缺少“条”状的。以致用户只能从例程中自己品味。

  4. 我衷心祝愿ST的这块IC,能让用户早日掌握。如同当年的51。
  5. 再问一个问题:一般的MCU大多均有一个“总的中断允许”,STM32有否?

使用特权

评论回复
8
lut1lut| | 2008-3-13 11:21 | 只看该作者

re (1)

注释五中本来就讲的是RTC-Alarm可以通过下图中的红色和绿色两条路线产生不同的中断,即
Vector Table中的关于RTC的两项:RTC global interrupt @ 0x4c和RTC alarm through EXTI line interrupt。本来就跟溢出中断和秒中断无关,不是“只强调ALRF和ALRIE”的问题。

 

使用特权

评论回复
9
lut1lut| | 2008-3-13 11:54 | 只看该作者

re (2)

2.
溢出中断RTC_overflow,必要条件:溢出中断使能打开OWIE@CRH=1;当32位的计数器溢出,则产生中断。
秒中断RTC_second,必要条件:秒中断使能打开SECIE@CRH=1;当32位的预分频器溢出,则产生中断。

他们和闹钟中断RTC_Alarm一起,经过“或”运算产生RTC_Handler。


3.
估计lz觉得ST的文档不够精细。但是论坛上出现了越来越多关于STM32的应用例子,并配有详细说明,我觉得ST已经开始重视文档问题,并且逐步在完善中。

5.
这个问题应该是Cortex-M3的问题了吧,因为它自己已经把NVIC做在了自己里面。吃了饭再回来找找~~~

使用特权

评论回复
10
60岁老头|  楼主 | 2008-3-13 12:21 | 只看该作者

那么,RTC_Handler入口地址在那里?

  楼上认为:
1.RTC global interrupt @ 0x4c和RTC alarm through EXTI line interrupt。本来就跟溢出中断和秒中断无关。
2.他们和闹钟中断RTC_Alarm一起,经过“或”运算产生RTC_Handler。

那么,RTC_Handler入口地址在那里?

使用特权

评论回复
11
lut1lut| | 2008-3-13 13:30 | 只看该作者

re

“1.RTC global interrupt @ 0x4c和RTC alarm through EXTI line interrupt。本来就跟溢出中断和秒中断无关。”真是断章取义。

RTC_alarm/RTC_second/RTC_overflow通过或运算产生RTC_IRQHandler即"RTC global interrupt",该中断在vector table的0x004c;

另外,RTC_alarm可以从外部中断直接产生RTCAlarm_IRQHandler中断,该中断在vector table的0x00e4.

注释5是要说明RTC_alarm可以映射到vector table中不同的表项,就是上图中两条彩色线条标明的那样。手册在说明这两条RTC_Alarm的中断时,当然和RTC_Second/RTC_Overflow没有关系。


英文手册中的原文“5 If ALRF = 1 and ALRIE = 1, the RTC global interrupt is enabled.......”可能会引起曲解:以为只有ALR才会产生global interrupt。

使用特权

评论回复
12
60岁老头|  楼主 | 2008-3-13 13:38 | 只看该作者

把我的血压搞得180,要你陪。

 把我的血压搞得180,要你陪。

使用特权

评论回复
13
lut1lut| | 2008-3-13 14:07 | 只看该作者

是不是我说的有点拗口阿,还请前辈海涵。

使用特权

评论回复
14
60岁老头|  楼主 | 2008-3-13 14:18 | 只看该作者

180是真,要你陪,不是要你赔。玩笑!

    好一个“真是断章取义”的自责,比我的“我错了”更值钱。
    对不起!再聊。

使用特权

评论回复
15
香水城| | 2008-3-13 17:51 | 只看该作者

哈哈,两位说的都没有错

一个说的是必要条件,另一个说的是充分条件。

我认为RTC_IRQHandler的产生条件是:(SECF & SECIE) | (OWF & OWFIE) | (ALRF & ALRIE),这点两位没有异议吧?!

使用特权

评论回复
16
60岁老头|  楼主 | 2008-3-13 18:28 | 只看该作者

我有异议,除非能证明无须NVIC_Configuration。

使用特权

评论回复
17
香水城| | 2008-3-13 18:43 | 只看该作者

17楼的异议成立,NVIC是默认的,谁也绕不过去

这一点在上面的图中标得很清楚,两条路都最终进入NVIC。


我认为作为一个芯片手册,需要严谨是对的,但对于一些公认的事实不必每次出现都要提及,否则手册将变得非常臃肿。当然如果能够在每个模块中都反复地提及所有相关的部分,有利于读者跳跃式地阅读。我个人认为,我们应该在这两者之间找到一个平衡点,所以我部分同意8楼的观点,我们需要加上一些“条”状的东西。

使用特权

评论回复
18
60岁老头|  楼主 | 2008-3-13 19:40 | 只看该作者

谢谢,请宽恕我这个又僵又硬的老头。

使用特权

评论回复
19
60岁老头|  楼主 | 2008-3-14 11:06 | 只看该作者

可能我又错了。

   “17楼: 我有异议,除非能证明无须NVIC_Configuration。”
   这句话可能要收回。初学者,似懂非懂。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

23

主题

158

帖子

0

粉丝