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

[复制链接]
790|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 | 显示全部楼层
那就用传统的飞读
香水城 发表于 2018-7-31 11:47 | 显示全部楼层
如果担心读完低位去读高位时发生中断,且中断服务持续较久的话可以考虑暂时关闭下中断响应。

评分

参与人数 1威望 +3 收起 理由
eng588 + 3

查看全部评分

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

粉丝
快速回复 在线客服 返回列表 返回顶部