打印
[STM32F1]

RTC 读高低寄存器需要关中断吗

[复制链接]
678|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
eng588|  楼主 | 2018-7-30 14:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
如题所示,为了保证读时的“连续性”要关中断吗?还是STM32在读CNTL时会自动锁住CNTH?
uint32_t RTC_GetCounter(void)
{
  uint16_t tmp = 0;
  tmp = RTC->CNTL;
  return (((uint32_t)RTC->CNTH << 16 ) | tmp) ;
}
沙发
ayb_ice| | 2018-7-30 14:34 | 只看该作者
看手册

使用特权

评论回复
板凳
eng588|  楼主 | 2018-7-30 17:21 | 只看该作者

手册上没明确说明

使用特权

评论回复
地板
ayb_ice| | 2018-7-31 08:35 | 只看该作者
那就用传统的飞读

使用特权

评论回复
5
香水城| | 2018-7-31 11:47 | 只看该作者
如果担心读完低位去读高位时发生中断,且中断服务持续较久的话可以考虑暂时关闭下中断响应。

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
eng588 + 3
6
ayb_ice| | 2018-7-31 13:34 | 只看该作者
uint32_t RTC_GetCounter(void)
{
        while (1)
        {
                volatile uint16_t tmp1;
                volatile uint16_t tmp2;

                tmp2 = RTC->CNTH;
                tmp1 = RTC->CNTL;
                if (tmp2 == RTC->CNTH)
                {
                        return tmp2*65536ul + tmp1;
                }
        }
}

使用特权

评论回复
评分
参与人数 1威望 +3 收起 理由
eng588 + 3
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

82

主题

179

帖子

0

粉丝