7990|7

74

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

急问:stm32的rtc时钟必须用外部的晶振吗? [复制链接]

我想只用内部时钟給rtc,快速看了资料好几遍也没找到该怎么操作。。:(
香主,給点建议吧。。:D
此帖出自stm32/stm8论坛

最新回复

                                 准备用RTC每200ms产生一次定时中断,让Led每200ms开关一次。以下流程有没有问题或bug?RTC使用LSI(40KHz)1)通过函数RTC_SetPrescaler(7999)将RTC周期设定为200ms2)通过函数RTC_ITConfig(RTC_IT_SEC, ENABLE)使能RTC秒中断3)在中断向量表中,提供/* 19, INTISR[  3]  RTC Global Interrupt*/对应的中断服务程序RTC_Global_Interrupt()4)在中断服务程序中void RTC_Global_Interrupt( void )中:void RTC_Global_Interrupt( void ){    if( RTC_GetITStatus(RTC_IT_SEC) != RESET )    {        RTC_ClearITPendingBit(RTC_IT_SEC);        RTC_WaitForLastTask();        /* Reset RTC Counter when Time is 23:59:59 */        if(RTC_GetCounter() == 0x00015180)        {            RTC_SetCounter(0x0);            RTC_WaitForLastTask();         }        //开关LED;    }}   详情 回复 发表于 2008-4-19 11:18
点赞 关注
 

回复
举报

72

帖子

0

TA的资源

一粒金砂(初级)

沙发
 

找到了,

可以用LSI来实现,呵呵,精度差也没关系,:D
自己调试一下。。试试~
此帖出自stm32/stm8论坛
 
 

回复

81

帖子

0

TA的资源

一粒金砂(初级)

板凳
 

STM32的LSI可以作为内置RTC的时钟

                                 但精度较差而且受供电和温度影响;好处是低成本。
此帖出自stm32/stm8论坛
 
 

回复

96

帖子

0

TA的资源

一粒金砂(中级)

4
 

LSI

                                  
此帖出自stm32/stm8论坛
 
 
 

回复

80

帖子

0

TA的资源

一粒金砂(初级)

5
 

LSI精度

“精度较差而且受供电和温度影响”
----有没有精度、受供电和温度影响 方面的数据呢?
手册上只给了Typical 40KHz,Max 60KHz,Min 30KHz
此帖出自stm32/stm8论坛
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

6
 

LSI精度受供电和温度影响

我没有更多的数据。

你已经看到手册上的参数,你也应该看到参数表下面的注解:所有的参数是在VDD=3V,环境温度为-40至105°C下的参数。

既然你要求不高,你可以做个实验实测一下电压对LSI频率的影响。
此帖出自stm32/stm8论坛
 
 
 

回复

67

帖子

0

TA的资源

一粒金砂(初级)

7
 

记得LSI不是32.768kHZ

所以个人认为,如果用作时钟长时间准确保存,需要用外部晶振。
此帖出自stm32/stm8论坛
 
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

8
 

RTC使用LSI(40KHz)

准备用RTC每200ms产生一次定时中断,让Led每200ms开关一次。以下流程有没有问题或bug?

RTC使用LSI(40KHz)

1)通过函数RTC_SetPrescaler(7999)
将RTC周期设定为200ms

2)通过函数RTC_ITConfig(RTC_IT_SEC, ENABLE)
使能RTC秒中断

3)在中断向量表中,提供/* 19, INTISR[  3]  RTC Global Interrupt*/
对应的中断服务程序RTC_Global_Interrupt()

4)在中断服务程序中void RTC_Global_Interrupt( void )中:
void RTC_Global_Interrupt( void )
{
    if( RTC_GetITStatus(RTC_IT_SEC) != RESET )
    {
        RTC_ClearITPendingBit(RTC_IT_SEC);

        RTC_WaitForLastTask();

        /* Reset RTC Counter when Time is 23:59:59 */
        if(RTC_GetCounter() == 0x00015180)
        {
            RTC_SetCounter(0x0);

            RTC_WaitForLastTask();
         }

        //开关LED;
    }
}
此帖出自stm32/stm8论坛
 
 
 

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

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
Microchip 直播|利用motorBench开发套件高效开发电机磁场定向控制方案 报名中!
直播主题:利用motorBench开发套件高效开发电机磁场定向控制方案
直播时间:2025年3月25日(星期二)上午10:30-11:30
快来报名!

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表