历史上的今天
今天是:2025年01月26日(星期日)
2019年01月26日 | STM8->RCC
2019-01-26 来源:eefocus
尝试通过RTC中断唤醒halt()低功耗模式,需要一个功耗低的时钟源作为RTC运行时钟,选择LSI的16分频作为时钟源:
void RCC_LSI(void)
{
CLK_LSICmd (ENABLE);
CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_LSI);
while(CLK_GetFlagStatus(CLK_FLAG_LSIRDY)==RESET);
CLK_SYSCLKSourceSwitchCmd (ENABLE);
if(CLK_GetSYSCLKSource()==CLK_SYSCLKSource_LSI)
{
CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_16);
}
}
RTC中断设置:
RTC_DeInit();
CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE);
CLK_RTCClockConfig(CLK_RTCCLKSource_LSI, CLK_RTCCLKDiv_64);
RTC_WakeUpClockConfig(RTC_WakeUpClock_RTCCLK_Div16);
RTC_ITConfig(RTC_IT_WUT, ENABLE);
RTC_SetWakeUpCounter(time);
RTC_ClearITPendingBit(RTC_IT_WUT);
此处没有直接使能,因为在调试过程中,这部分的设置是在高速时钟下,如果把这部分设置都放置RCC_LSI()之后,则会卡死,所以只将RTC_WakeUpCmd(ENABLE)放在RCC_LSI()函数之后。
halt()或wfi()模式被RTC中断唤醒后,切换回高速内部时钟:
void RCC_HSI(void)
{
CLK_HSICmd(ENABLE);
CLK_SYSCLKSourceConfig(CLK_SYSCLKSource_HSI);
while(CLK_GetFlagStatus(CLK_FLAG_HSIRDY)==RESET);
CLK_SYSCLKSourceSwitchCmd (ENABLE);
if(CLK_GetSYSCLKSource()==CLK_SYSCLKSource_HSI)
{
CLK_SYSCLKDivConfig(CLK_SYSCLKDiv_1);
}
}
在尝试直接从LSI切换到HSI失败时,STLINK连接MCU发生错误:
Failed to get execution status: SWIM error [30004]: Comm timeout 。因为调试过程中发生的,不存在硬件的突然异常,这种连接错误只能归因于MCU系统时钟没有工作,在该例中是由于时钟没有正常过渡,在调试中LSI到HSI切换时钟时发生,根据网上获得的一些线索可能是与寄存器操作的-“|”或-有关系。
在利用IAR for STM8 开发的过程中,如果工程较大结构层次较复杂,或者是经常改换文件名,会导致软件崩溃:
Fatal Error[Pe1696]: cannot open source file "stm8l15x_pwr.h",由于IAR软件的崩溃,原本正常的工程一下子报了很多此类的错误。只能重新添加引用文件夹了。

还有一类错误:
Fatal error: Unknown exception in driver (SD1) Session aborted!
网上可以查到的答案是因为IAR没与Texas Instruments在同一个系统盘下导致的,但这也是突发性的,应该不涉及到安装目录的问题,工程完善后这个问题也就奇怪消失了。
下一篇:STM8->GPIO
史海拾趣
|
现在手机中的射频信号通道越来越拥挤。蜂窝电话已经从双频向三频甚至四频快速发展。这些复杂手机还需要处理来自外围无线设备的各种信号,如蓝牙、Wi-Fi和GPS。而随着WiMAX和LTE(4G)的加入,这种复杂度将越来越高。在移动电话中,天线开关控制着天线 ...… 查看全部问答> |
|
我用这个方法,但是好像获取的大小有问题,不知道这个方法是不是正确的方法,还没有更好的办法? DDCAPS ddcaps; ddcaps.dwSize = sizeof DDCAPS; lpdd ...… 查看全部问答> |
|
LPCWSTR strDrvName=L\"\"; strDrvName=TEXT(\"NDS0:\"); HANDLE hHandle; hHandle ...… 查看全部问答> |
|
请问有人做过误码仪吗?最近在做一个误码仪,有个问题卡在那边,问题是要我产生误码,之后就是让我检测误码,码型为NRZ,RZ,AMI,HDB3码,关于NRZ,RZ码我就不知道了,这种码还能判断误码?… 查看全部问答> |
|
128M扩到512M,我用的是uboot+NK.nb0,uboot已经改好ram初始化部分,没有开mmu,在uboot下测试512内存读写正常,wince改了config.bib中ram大小,oemtable也改了内存映射,但是现在内核跑到oeminit跑完就死了,不好调试。试着用oemgetextensiondram( ...… 查看全部问答> |
|
渥瑞达“3G移动开发”免费试听课于北京交通大学举行,欢迎大家光临! 渥瑞达“3G移动开发”免费试听课于北京交通大学举行,欢迎大家光临! 渥瑞达“3G移动开发”免费试听课于北京交通大学举行,欢迎大家光临! 详情请参见 www.neworigin.net 同时欢迎大家与我们的609期学员交流!这期学员已与2月11日毕业 ...… 查看全部问答> |
|
【连载】【ALIENTEK MiniSTM32 开发板】STM32不完全手册-内部温度传感器实验(14) 开发板购买地址:http://shop62103354.taobao.com [ 本帖最后由 正点原子 于 2010-9-7 09:45 编辑 ]… 查看全部问答> |
|
今天在看书时发现一点疑惑,问题大致是这样的: 一个电路网络,要对其中一个2输入与门的输出(定义为tmp吧,其实此处并不存在端口或变量)进行一些赋值操作,。在Verilog编程中按说是应该把其定义为wire型变量,可是今天看的一个例子却定义成了reg ...… 查看全部问答> |
|
2812搜查令+TMS320F2812芯片开发中Flash代码性能的研究 TMS320F2812芯片开发中Flash代码性能的研究 感兴趣的下过去看看啊 [ 本帖最后由 hangsky 于 2011-11-8 13:36 编辑 ]… 查看全部问答> |




