stm32 RTC_WaitForSynchro()死循环

发布者:晴天7777最新更新时间:2019-03-06 来源: eefocus关键字:stm32  RTC_WaitForSynchro()  死循环 手机看文章 扫描二维码
随时随地手机看文章

1.RTC_WaitForSynchro()死循环,发现是没有执行RTC_Configuration(),增加函数,但不知道对之后的时钟准确性有什么影响



/*******************************************************************************

* Function Name  : RTC_Configuration

* Description    : Configures the RTC.

* Input          : None

* Output         : None

* Return         : 0 reday,-1 error.

*******************************************************************************/

int RTC_Configuration(void)

{

    u32 countmax = 0x20000;

    u32 count = countmax;

    /* Enable PWR and BKP clocks */

    RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);

    /* Allow access to BKP Domain */

    PWR_BackupAccessCmd(ENABLE);

    /* Reset Backup Domain */

    BKP_DeInit();

    /* Enable LSE */

    RCC_LSEConfig(RCC_LSE_ON);

 

    /* Wait till LSE is ready */

    while((RCC_GetFlagStatus(RCC_FLAG_LSERDY) == RESET) && (--count));

 

    if(count == 0)

    {

        count = countmax;

        //关闭外部低速晶振(LSE)

        RCC_LSEConfig(RCC_LSE_OFF);

        //如果失败,使用内部晶振

        //使能或者失能内部低速晶振(LSI)

        RCC_LSICmd(ENABLE);

        //设置RTC时钟(RTCCLK)

        RCC_RTCCLKConfig(RCC_RTCCLKSource_LSI);

 

        /* Wait till LSI is ready */

        while((RCC_GetFlagStatus(RCC_FLAG_LSIRDY) == RESET) && (--count));

 

        if(count == 0)

            return 1;

    }

    else

    {

        /* Select LSE as RTC Clock Source */

        RCC_RTCCLKConfig(RCC_RTCCLKSource_LSE);//设置RTC时钟(RTCCLK)

    }

 

    /* Enable RTC Clock */

    RCC_RTCCLKCmd(ENABLE);

    /* Wait for RTC registers synchronization */

    RTC_WaitForSynchro();

    /* Wait until last write operation on RTC registers has finished */

    RTC_WaitForLastTask();

    /* Set RTC prescaler: set RTC period to 1sec */

    RTC_SetPrescaler(32767); /* RTC period = RTCCLK/RTC_PR = (32.768 KHz)/(32767+1) */

    /* Wait until last write operation on RTC registers has finished */

    RTC_WaitForLastTask();

    return 0;

}



void rt_hw_rtc_init(void)

{

    rtc.type    = RT_Device_Class_RTC;

 

    if(BKP_ReadBackupRegister(BKP_DR1) != 0xA5A5)

    {

        rt_kprintf("rtc is not configured\n");

        rt_kprintf("please configure with set_date and set_time\n");

 

        if(RTC_Configuration() != 0)

        {

            rt_kprintf("rtc configure fail...\r\n");

            return ;

        }

    }

    else

    {

        if(RTC_Configuration() != 0)

        {

            rt_kprintf("rtc configure fail...\r\n");

            return ;

        }

 

        /* Wait for RTC registers synchronization */

        RTC_WaitForSynchro();

    }

 

    /* register rtc device */

    rtc.init    = RT_NULL;

    rtc.open    = rt_rtc_open;

    rtc.close   = RT_NULL;

    rtc.read    = rt_rtc_read;

    rtc.write   = RT_NULL;

    rtc.control = rt_rtc_control;

    /* no private */

    rtc.user_data = RT_NULL;

    rt_device_register(&rtc, "rtc", RT_DEVICE_FLAG_RDWR);

    return;

}


关键字:stm32  RTC_WaitForSynchro()  死循环 引用地址:stm32 RTC_WaitForSynchro()死循环

上一篇:STM32 RTC 时钟
下一篇:关于STM32F103C8T6内部FLASH容量的问题

推荐阅读最新更新时间:2024-03-16 16:24

STM32生态系统—SBSFU原理介绍
安全启动,构建信任链 安全启动,作为信任根 安全启动,和用户应用一样,都是一段代码,放在片上的用户闪存中 复位后运行的代码只能是这段“安全启动” 这段“安全启动”代码,由用户开发,设备出厂后不能再修改 安全启动,如何认证下一阶段代码 “安全启动”代码,检查应用代码的签名,核实(广义的) “message integrity” 消息认证 安全启动,如何认证下一阶段代码 “安全启动”代码,检查应用代码的签名,核实(广义的) “message integrity” 签名以应用代码元数据//Meta data的形式提供 签名//元数据 是如何生成的 签名//元数据 是如何被校验的 安全固件更新
[单片机]
<font color='red'>STM32</font>生态系统—SBSFU原理介绍
STM32时钟库函数RCC_DeInit介绍
void RCC_DeInit(void) { RCC- CR |= (uint32_t)0x00000001; //开启内部8MHz时钟 #ifndef STM32F10X_CL //STM32F10X_CL指的是STM32互联系列微处理器 RCC- CFGR &= (uint32_t)0xF8FF0000; //其它类型处理器的CFGR寄存器中27-31位是保留位,24-26为MCO位 #else //而互联型处理器的CFGR寄存器中,28-31位是保留位,24-27位属MCO RCC- CFGR &= (uint32_t)0xF0FF0000; //初始化CFGR寄存器,详见注释第1条 #endif RCC-
[单片机]
基于stm32 的fatfs0.07e移植过程分享
前段时间移植了fats文件系统,并基于这个文件系统,做了个简单的wav文件播放器,可以播放sd卡根目录下music文件夹里所有pcm编码的wav文件,并且支持下一曲、上一曲、暂停、开始操作。在这个过程中遇到了很多问题,在这里把我的移植经历和大家分享。 硬件平台:英蓓特 EM-STM3210E开发板 软件平台:mdk3.40;stm32V2.01库 FATfs版本:R0.07e。可在 http://elm-chan.org/fsw/ff/00index_e.html 下载 EM-STM3210E开发板上的sd卡例程只是简单的写和读sd卡的某个扇区,当然这样写过后卡上的文件系统格式就被破
[单片机]
Stm32 基于蓝牙的串口通信 详细篇
1. HC-05蓝牙 1.1蓝牙模块使用介绍 蓝牙HC05是主从一体的蓝牙串口模块,简单的说,当蓝牙设备与蓝牙设备配对连接成功后,我们可以忽视蓝牙内部的通信协议,直接将将蓝牙当做串口用。当建立连接,两设备共同使用一通道也就是同一个串口,一个设备发送数据到通道中,另外一个设备便可以接收通道中的数据。 1.2蓝牙模块使用注意 hc-05支持从4800bps~1382400bps间的标准波特率,使用时波特率一定要匹配,vcc接3.3 或者 5V GND 接GND TX接单片机上的RX RX接TX。 2.Stm32F1串口通信 2.1串口通信介绍 STM32F103ZET6 最多可提供 5 路串口, 2.2串口通信算法思路
[单片机]
<font color='red'>Stm32</font> 基于蓝牙的串口通信 详细篇
如何利用VSCode 搭建STM32开发环境
众所周知,Keil是一款收费软件,虽然可以Po解使用,但很多公司还是有点害怕,想必有不少读者都收到过**函。 之前,开发单片机项目,可以说 Keil 是最佳选择之一,但VSCode横空问世之后,这种格局被打破。 因为 VSCode 免费且好用,可以安装各种插件,很多工程师逐渐从Keil 转向了 VSCode。而且,VSCode还能实现 Keil 不能实现的一些功能。 下面就给大家分享一下 VSCode 搭建 STM32 开发环境的一些常规且使用的功能。 一、需要的软件和工具 下载最新版VS Code: 安装好插件,具有良好的代码补全与调试功能。 VS Code下载地址:https://code.visualstud
[单片机]
如何利用VSCode 搭建<font color='red'>STM32</font>开发环境
意法半导体发布价格亲民的能够连接云端的STM32开发工具套件
中国,2017年5月8日 —— 意法半导体(ST)新推出高连接性的STM32L4 物联网探索套件(B-L475E-IOT01A),为开发人员开发物联网节点带来业内最高的灵活性,支持诸多低功耗无线通信标准和Wi-Fi®网络连接,同时还集成市场上同类产品所没有的运动传感器、手势控制传感器和环境传感器。 旨在帮助将物联网硬件立即连接到云服务,同时保证高能效和高成本效益,意法半导体新物联网开发套件在同一块电路板上集成高性能且超低功耗的STM32L4微控制器与Bluetooth®low energy (BLE)、sub-GHz RF和Wi-Fi无线通信模块,及一个带印刷天线的动态NFC标签IC。 借助意法半导体强大的MEMS(微机电
[物联网]
意法半导体发布价格亲民的能够连接云端的<font color='red'>STM32</font>开发工具套件
STM32定时器时钟配置问题说明SystemCoreClock
在研究STM32L476的通用定时器时,遇到了一个关于SystemCoreClock值=4000000U的问题,琢磨了好久,终于弄明白了,这里记录一下。 1、定时器初始化函数中 2、其中的SystemCoreClock是在system_stm32l4xx.c文件中定义的一个变量 3、其实这个值在此处只是一个变量定义时的初始值,系统在时钟初始化时会使用上面的方法3进行更新的。在SystemClock_Config中会调用HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_3)函数更新系统时钟。 4、在HAL_RCC_ClockConfig 5、在HAL_RC
[单片机]
<font color='red'>STM32</font>定时器时钟配置问题说明SystemCoreClock
RC522读写程序代码分享
#include stm32f10x.h #include stm32f10x_spi.h #include stm32f10x_gpio.h #include stm32f10x_rcc.h #include delay.h #include mfrc522.h #include stdio.h #define SPI_CE_LOW() GPIO_ResetBits(GPIOA,GPIO_Pin_4) #define SPI_CE_HIGH() GPIO_SetBits(GPIOA,GPIO_Pin_4) void SPI1_Init(void) { RCC_AP
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved