找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 580|回复: 1
打印 上一主题 下一主题
收起左侧

stm32-RTC单片机时钟秒中断,不能每秒都进入

[复制链接]
回帖奖励 10 黑币 回复本帖可获得 2 黑币奖励! 每人限 1 次
跳转到指定楼层
楼主
ID:1028013 发表于 2022-11-27 08:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
RTC_SetPrescaler(32767);//设置RTC的分频,
RTC_WaitForLastTask();
RTC_SetCounter(0xf73f);//设置时间初值: 63295,0xf73f, 17:34:55

在RTC_IRQHandler里面打印串口输出,结果一直都是间隔7秒才打印一次,不应该是每秒都执行一次吗,是哪里的问题哦

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:401564 发表于 2022-11-27 12:27 | 只看该作者
这是一个完整的初始化函数
void rtc_init(void)//RTC初始化设定
{
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR,ENABLE);//打开电源时钟
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_BKP,ENABLE);//打开存储器时钟
        PWR_BackupAccessCmd(ENABLE);                                                                                        //使能RTC后备寄存器访问
        BKP_DeInit();                                                                                                                                                        //BKP外设全部寄存器设定为默认值
        RCC_LSEConfig(RCC_LSE_ON);                                                                                                //开启32.768外部时钟
        while(RCC_GetFlagStatus(RCC_FLAG_LSERDY)==RESET);        //等待时钟振荡
        RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);                                                //选定RTC时钟,选定后不能更改,除非复位
        RCC_RTCCLKCmd(ENABLE);                                                                                                                //使能RTC
        RTC_WaitForSynchro();                                                                                                                        //等待RTC的ABP时钟同步
        RTC_WaitForLastTask();                                                                                                                //等待最近一次对RTC写操作的完成
        RTC_ITConfig(RTC_IT_SEC,ENABLE);                                                                        //使能RTC中断
        RTC_WaitForLastTask();                                                                                                                //等待最近一次对RTC写操作的完成
        RTC_SetPrescaler(32768-1);                                                                                                //RTC分频设定
        RTC_WaitForLastTask();                                                                                                                //等待最近一次对RTC写操作的完成
       
        RTC_NVIC_Config();                                                                                                                                //RTC中断设定
        RTC_WaitForLastTask();                                                                                                                //等待最近一次对RTC写操作的完成       
        Set_RTC_Val(0);
        BKP_WriteBackupRegister(BKP_DR1,0xa5a5);                                        //已经初始化过RTC,可以写入
}
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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