历史上的今天
今天是:2025年07月24日(星期四)
2018年07月24日 | stm8 RTC自动唤醒
2018-07-24 来源:eefocus
Stm8l RTC 调试心得 经过两天的摸索,终于把stm8l05b13的RCT 自动唤醒调通了。分别有库和寄存器来实现。给大家分享一下。这里只说函数,原理自己看使用手册,废话不多说,程序呈上, RTC 初始化.
void RTC_Config(uint16_t time)
{ RTC_DeInit(); //初始化默认状态
CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE); //允许RTC时钟
CLK_RTCClockConfig(CLK_RTCCLKSource_LSI, CLK_RTCCLKDiv_2); //选择RTC时钟源LSI、2=19K
RTC_WakeUpClockConfig(RTC_WakeUpClock_RTCCLK_Div16); //19k/16=1.1875KHz t=0.85ms
RTC_ITConfig(RTC_IT_WUT, ENABLE); //开启中断
RTC_SetWakeUpCounter(time); //设置RTC Weakup计算器初值
RTC_WakeUpCmd(ENABLE); //使能自动唤醒
}
RTC 中断 @far @interrupt
void RTC_CSSLSE_IRQHandler (void)
{ RTC_WakeUpCmd(DISABLE);
RTC_ClearITPendingBit(RTC_IT_WUT);
}
Main()
{ GPIO_config();
RTC_Config(2000); //2000*0.85ms=1.7s _asm("rim");
while(1)
{ if(!GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_3))
{ RTC_WakeUpCmd(ENABLE); LED(OFF); _asm("halt"); } LED(ON);; } }
PB3接一个按键到地,指示灯灭,进入active-halt.1.7s后自动唤醒,指示灯亮 使用STVD 开发环境库函数。stm8l系列容易发溢出。有时候代码没多少就已经溢出了。删除库函数中的不要的部分,可能会得到一些空间但还是不够,最直接的办法就是改用寄存器操作
void RTC_Config(uint16_t time)
{ uint16_t wutwfcount = 0;
CLK->PCKENR2 =0x04; //CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE);
CLK->CRTCR =0x24;//CLK_RTCClockConfig(CLK_RTCCLKSource_LSI, CLK_RTCCLKDiv_2);//LSI=19K RTC->WPR = RTC_WPR_DisableKey1;
RTC->WPR = RTC_WPR_DisableKey2; RTC->CR2 &=~0x04;
while (((RTC->ISR1 & RTC_ISR1_WUTWF) == RESET) && ( wutwfcount != 0xffff)) { wutwfcount ; }
RTC->CR1=0x00;
RTC->CR2 &=~0x04;
wutwfcount = 0;
while (((RTC->ISR1 & RTC_ISR1_WUTWF) == RESET) && ( wutwfcount != 0xffff))
{ wutwfcount ; } RTC->WUTRH = (uint8_t)(time>> 8);
RTC->WUTRL = (uint8_t)time;
RTC->CR2 =0x04; RTC->WPR=0xff; }
中断函数 @far @interrupt
void RTC_IRQHandler(void)
{ RTC->WPR = RTC_WPR_DisableKey1;
RTC->WPR = RTC_WPR_DisableKey2;
RTC->CR2 &=~0x04; RTC->WPR=0xff;
RTC->ISR2&=~0x04; }
关于RTC_Config中的while语句对应手册里的一句话关于RTC->ISR1中的WUTWF位 This bit is set by hardware when the wakeup timer values can be changed, after the WUTE bit has been set to 0 in RTC_CR2 0: Wakeup timer update not allowed. 1: Wakeup timer update allowed.
史海拾趣
|
本帖最后由 jameswangsynnex 于 2015-3-3 19:57 编辑 据国外媒体报道,微软董事会主席比尔-盖茨在CES(消费电子展)开幕前的主题演讲中表示,今年年内将为Xbox 360游戏平台 增加一个外设HD-DVD光驱。1月5日晚些时候,一年一度的消费电子展(CES) ...… 查看全部问答> |
|
准则选取 在选择任何准则之前,有必要给软件无线电精确的定义。在底板各处,开发人员可为软件无线电架构的构成下许多不同的定义,但本文将采用软件无线电论坛的方法,将软件无线电定义为「在较大频率范围内,能对目前已有的以及将来会出现的诸多调 ...… 查看全部问答> |
|
YS100生物显微镜/医疗教学配套生物显微镜 联系人:刘小姐 电话:027-88070217 13871258433 价格:8500元 来电优惠 商品描述: 物美价廉的YS100,最适合用于生物学,农林渔业,医学等领域的教学和研究及临床试验和常规医疗检验,操 ...… 查看全部问答> |
|
本帖最后由 jameswangsynnex 于 2015-3-3 19:58 编辑 装置的电路工作原理见下图。当保险丝FU1完好时,氖泡ND被短路不亮,同时LSE的①、②脚串通,此时LSE的④脚输出高电平,三极管VT截止,单向可控硅VS无触发电流不工作,继电器J无电流不吸合。一 ...… 查看全部问答> |
|
本帖最后由 dontium 于 2015-1-23 12:45 编辑 D105的输入1.25*(1+740/220)=5.45V,D105的输出到芯片供电约5.1V,平时由它供电,并同时向4.8V镍氢电池充电,当掉电后,镍氢电池供电,同时又不会向LM317反灌。 … 查看全部问答> |
|
我想利用gsensor做个简单的手势识别功能(比如左右甩动等,像iphone那样)。几个物理问题请教。 请问: 1. 人的手臂甩动的时间大概是多长? 2. 甩动后,人的手臂自然会反方向一点, ...… 查看全部问答> |
|
大家好,求助,急,bootloader在avr studio(gcc)的环境下配置问题,我用是mega128 大家好、请教一下,bootloader在avr studio(gcc)的环境下应该怎么配置呀?我用是mega128 这几天上网找了很多的资料(包括马潮老师,傻孩子老师,shaoziyang老师的帖子)也看了大家的讨论,ICC下的bootloader已经实现。但是avr studio(gcc)始 ...… 查看全部问答> |




