• LoRaWAN_stack移植笔记(四)__RTC


    stm32相关的配置

    由于例程使用的主控芯片为STM32L151C8T6,而在本设计中使用的主控芯片为STM32L051C8T6,内核不一样,并且Cube库相关的函数接口及配置也会有不同,所以芯片的驱动所以做修改。

    RTC 的配置

    此例程中,RTC被当做定时器使用,用于定时执行任务。

    例程中,RTC使用外部LSE的32.768Khz的晶振作为时钟源,
    而在本设计中,使用内部LSI作为RTC的时钟源,需要重新设置RTC的分频参数,使得程序正常运行。

    注意MCU内部的低速晶振往往误差很大,在使用时很大可能会造成模块接收不到下行包,因为接收对接收窗口的时间要求比较严格,所以如果是对下行要求比较严格的环境,建议不要使用内部晶振。

    根据Fck_spre = Frtcclk/(PREDIV_S+1)/(PREDIV_A+1)
    例程中RTC的工作频率为32.778/(3+1)/(3+1) = 2.048Khz,

    而内部晶振的频率约为37Khz,故PRVEDIV_S和PREDIV_A的值需要改变。

    37/2.048 ~= 18;
    数据手册里面有这样一句话:	
    Note: When both prescalers are used, it is recommended to configure the asynchronous 
    prescaler to a high value to minimize consumption.
    所以:18 = 9*2;故设置PREDIV_A = 8,PREDIV_S = 1;
    

    由于
    37/18 ~= 2.055
    1/2.055 ~= 0.486618

    故此处的宏定义需要稍作修改

     /*!
     * RTC Time base in ms
     */
    #define RTC_ALARM_TICK_DURATION                     0.486618      // 1 tick every 466us
    #define RTC_ALARM_TICK_PER_MS                       2.055           // 1/2.055 = tick duration in ms ((37/(8+1)/(2+1)) = 2.055Khz)
    
  • 相关阅读:
    x64共享库中的位置无关代码(PIC)
    windows库的创建和使用:静态库+动态库
    溃烂中的代码
    微信考勤玩法曝光!
    Android自己定义ViewGroup(二)——带悬停标题的ExpandableListView
    WPF对象级资源的定义与查找
    java List转换和数组互转
    maven 打包构建相关命令
    java8 lambda表达式
    Mysql INSTR函数
  • 原文地址:https://www.cnblogs.com/answerinthewind/p/6272336.html
Copyright © 2020-2023  润新知