zoukankan      html  css  js  c++  java
  • RTC毫秒级Alarm触发

    1. RTC闹钟设置寄存器

    当可编程计数器的值与RTC_ALR中的32位值相等时,即触发一个闹钟事件,并且产生RTC闹钟 中断。

    在这里插入图片描述

    1. RTC可编程计数器

    RTC核有一个32位可编程的计数器,可通过两个16位的寄存器访问。计数器以预分频器产生的 TR_CLK时间基准为参考进行计数。RTC_CNT寄存器用来存放计数器的计数值。

    在这里插入图片描述

    1. 操作步骤:

    1.去掉写保护
    2.允许闹钟中断
    3.配置闹钟时间,也就是写RTC_ALR寄存器
    4.加上写保护
    以上是在RTC时钟初始化完成的基础上
    当以RTC时钟经过分频之后的时基上计数,计数的值存放在RTC_CNT中,当RTC_CNT的值==RTC_ALR得值时,产生闹钟中断,然后在闹钟中断中清零RTC_CNT,使其产生下一次闹钟中断
    毫米级的实现,设置分频值为40,则RTC以1K的频率计数,记一次数为1ms,设置RTC_ALR=1;就会没隔1ms产生一次闹钟中断。

    1. 源码:
    #include "hardware.h"
    /**
      * @brief  RTC中断初始化,用于睡眠定时唤醒
      * @param  
      * @retval 
      */
    void rtc_INT_init(uint16_t ms)
    {
    	LL_RTC_InitTypeDef RTC_InitStruct = {0};
    
    	LL_PWR_EnableBkUpAccess();
    	/* Enable BKP CLK enable for backup registers */
    	LL_APB1_GRP1_EnableClock(LL_APB1_GRP1_PERIPH_BKP);
    	/* Peripheral clock enable */
    	LL_RCC_EnableRTC();
    
    	/* RTC interrupt Init */
    	NVIC_SetPriority(RTC_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),0, 0));
    	NVIC_EnableIRQ(RTC_IRQn);
    
    	/** Initialize RTC and set the Time and Date 
    	*/
    	RTC_InitStruct.AsynchPrescaler = 40;
    	LL_RTC_Init(RTC, &RTC_InitStruct);
    	LL_RTC_DisableWriteProtection(RTC);
    	LL_RTC_EnableIT_ALR(RTC);
    	LL_RTC_ALARM_Set(RTC, ms);
    	LL_RTC_EnableWriteProtection(RTC);
    	/*寄存器版*/
    	//RTC->CRL|=1<<4;				//进入配置模式
    	//RTC->ALRH=0x0000;				//设置闹钟时间高位数据
    	//RTC->ALRL=ms;					//设置闹钟时间低位数据,以RTC时钟频率计数到该值产生闹钟中断
    	//RTC->CRH|=1<<1;				//允许闹钟中断
    	//RTC->CRL&=~(1<<4);			//退出配置模式
    }
    
    void RTC_IRQHandler(void)
    {
    	if(LL_RTC_IsActiveFlag_ALR(RTC))
    	{
    		LL_RTC_ClearFlag_ALR(RTC);
    		
    		LL_RTC_DisableWriteProtection(RTC);
    		LL_RTC_TIME_Set(RTC, 0x0000);
    		LL_RTC_EnableWriteProtection(RTC);
    		/*寄存器版*/
    		//RTC->CRL|=1<<4;					//进入配置模式
    		//RTC->CNTH=0x0000;				//设置计数器高位
    		//RTC->CNTL=0x0000;				//设置计数器低位,闹钟中断中清零该寄存器使其产生下一次闹钟中断
    		//RTC->CRL&=~(1<<4);			//退出配置模式
    	}
    }
    
    
  • 相关阅读:
    SharePoint 2013 配置基于表单的身份认证
    SharePoint 2013 场解决方案包含第三方程序集
    SharePoint 2010 站点附加数据升级到SP2013
    SharePoint 2013 在母版页中插入WebPart
    SharePoint 2013 搭建负载均衡(NLB)
    SharePoint 部署解决方案Feature ID冲突
    SharePoint 2013 配置基于AD的Form认证
    SharePoint Server 2016 Update
    SharePoint 2013 为用户组自定义EventReceiver
    SharePoint 2013 JavaScript API 记录
  • 原文地址:https://www.cnblogs.com/hhsxy/p/14018383.html
Copyright © 2011-2022 走看看