你的浏览器版本过低,可能导致网站不能正常访问!为了你能正常使用网站功能,请使用这些浏览器。
举报
安 发表于 2017-7-6 16:46 楼主,你看的是103的例程吧。L152是不一样的。
安 发表于 2017-7-6 13:46 都差不多,L152系列的例程里面都有了。如下代码:
zhao.zhao 发表于 2017-7-6 08:56 直接读出RTC内的秒数,然后就一样了
安 发表于 2017-7-6 09:31 stm32L152可以直接设置日期、时间、星期。设置以后会自动进行更新。
zhao.zhao 发表于 2017-7-6 13:25 使用HAL库,也不用动什么脑筋,很好使
安 发表于 2017-7-6 14:35 手册中写了,The maximum resolution allowed (30.52 μs with a 32768 Hz clock) is obtained with PREDIV ...
恩恩。版主。我是想按照F103的例程写一个L152的万年历。现在就是在配置上还有写中断服务函数上卡壳了,不知道用什么来代替F103的秒中断和RTC-Setcounter()函数。因为在L152里面没找到秒中断标志位和溢出中断的标志位。代码如下:
void RTC_IRQHandler(void)
{
if (RTC_GetITStatus(RTC_IT_SEC) != RESET)
{
RTC_Get();//¸üÐÂʱ¼ä
}
if(RTC_GetITStatus(RTC_IT_ALRA)!= RESET)
{
RTC_ClearITPendingBit(RTC_IT_ALRA);
}
RTC_ClearITPendingBit(RTC_IT_SEC|RTC_IT_OW);
}
然后看了资料有人这么写的。
//配置自动定时功能
/* 中断配置 *******************************************************/
EXTI_ClearITPendingBit(EXTI_Line20);
EXTI_InitStructure.EXTI_Line = EXTI_Line20;
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
EXTI_Init(&EXTI_InitStructure);
/*使能 RTC Wakeup Interrupt */
NVIC_InitStructure.NVIC_IRQChannel = RTC_WKUP_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
/* RTC 唤醒中端配置: Clock Source: RTCDiv_16, Wakeup Time Base: 4s */
RTC_WakeUpClockConfig(RTC_WakeUpClock_RTCCLK_Div16);
RTC_SetWakeUpCounter(0x1FFF);//0x1FFF = 8191; 4s = (8191+1)*(1/(32768/16))
/* 使能 the Wakeup Interrupt */
RTC_ITConfig(RTC_IT_WUT, ENABLE);
}
使能了RTC的定时中断,那么就要编写中断服务子程序,如下:
void RTC_WKUP_IRQHandler(void)
{
if(RTC_GetITStatus(RTC_IT_WUT) != RESET)
{
RTC_ClearITPendingBit(RTC_IT_WUT);
EXTI_ClearITPendingBit(EXTI_Line20);
}
}
但我不懂下面的那种写法中为什么还要给唤醒时钟进行分频,这样用能不能实现跟F103一样的效果。
版主 你写的代码是用cube写的吗?
版主,我想问下时钟分频那里为什么是0X7F 0XFF。查了一下是同步的跟异步的,到时候用的是32.768K的外部晶振吧,原子是直接用的这个函数RTC_SetPrescaler()。那为什么要设置同步跟异步的那两个数呢。 L系列开发板没有秒中断函数,我查了一下用时间戳中断函数好像也行的,那我该怎么配置呢
在STM32L152中 好像没有秒中断函数的吧,看了好久都没找到,只有图片里面的这些函数。还有清除中断位函数中的秒中断和溢出中断函数也没找到
版主。在L152板子上配置的时候时钟分频的配置函数跟F1的板子好像不一样,但没找到具体是什么函数
恩恩。是的。直接用stm32cube来配置的话很容易就弄好了。
用秒中断做什么?要根据实际情况来进行设置。
就像图中的打×和感叹号的语句一样,编译的时候是不通过的。我是直接把原子的代码复制过来,然后改一些地方。但现在这些地方找不到对应的函数
好像懂了,里面的这个两个数是跟这句话有关的吧。RTC_PRER register: Write first the synchronous value and
then write the asynchronous。 然后LSE = 32.768 kHz,PREDIV_A[6:0] 127=0x7F。 PREDIV_S[12:0】 255=0xFF.这么设置的话正好外部晶振的频率是32768HZ。