STM8->RCC

发布者:Dingsir1902最新更新时间:2019-01-26 来源: eefocus关键字:STM8  RCC 手机看文章 扫描二维码
随时随地手机看文章

尝试通过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  RCC 引用地址:STM8->RCC

上一篇:单片机中使用printf打印浮点数问题
下一篇:STM8->GPIO

推荐阅读最新更新时间:2024-03-16 16:23

stm8 eeprom
void EEPROOM_Configuration(void) { FLASH_DeInit(); /* Define flash programming Time*/ FLASH_SetProgrammingTime(FLASH_PROGRAMTIME_STANDARD); /* Unlock Data memory */ FLASH_Unlock(FLASH_MEMTYPE_DATA); } 写一位数据 FLASH_ProgramByte(0x4000,0xaa);//写0xaa数据到0x4000地址 读一位数据 read_data=FLASH_ReadByte(0x4000);//读取0x4000地址上的数据
[单片机]
STM8的程序更换不同芯片时要注意的地方
1、用AVR软件打开程序,选择options,修改单片机型号 2、如果C++内有型号,要修改对应的型号(没有跳过此步) 3、DEBUGGER选择对应的仿真器 4、如果头文件不一致,也要修改 5、stm8l15x.h这个H文件内要选择对应芯片的#define 6、有时候如果程序不能运行,要添加相应的.c库文件和conf文件内打开相应的#include
[单片机]
<font color='red'>STM8</font>的程序更换不同芯片时要注意的地方
实验5 PWM
在讲PWM之前,大家先做以下5个实验。 1、LED1循环亮300ms,灭700ms; 2、LED1循环亮30ms,灭70ms; 3、LED1循环亮3ms,灭7ms; 4、循环以下步骤 1)LED1循环亮3ms,灭7ms;执行一百次; 2)LED1循环亮8ms,灭2ms;执行一百次; 5、循环以下步骤 1)LED1循环亮1ms,灭9ms;LED2循环亮3ms,灭7ms;LED3循环亮5ms,灭5ms;以上3灯闪烁动作共用同个10ms周期,执行一百次; 2)LED1循环亮5ms,灭5ms;LED2循环亮7ms,灭3ms;LED3循环亮9ms,灭1ms;以上3灯闪烁动作共用同个10ms周期,执行一百次; 第1、2个实验,可以明显看出LE
[单片机]
实验5 PWM
一种集成RCC式开关电源器件设计及应用
       线性稳压电源因具有电路简单和成本低廉的优点,一直在低功率应用中倍受欢迎。这个线性稳压电源只需少量元件,且与开关电源SMPS(Switch Mode Power Supply)相比,更易于设计和制造。然而,由于以下两个原因,近年来线性电源开始逐渐被替代:其一,许多线性电源都是作为PDA、无绳电话和手机等产品的外部电源(EPS)绑定销售。如今EPS必须遵循严格的新节能标准,而此类标准几乎将线性电源排除在外,因为线性电源通常无法达到工作效率和空载功耗方面的标准;其二,大多数先进的低功率SMPS在成本和简单性方面与线性电源相当。这里将探讨低功率SMPS在初步应用阶段的不足之处,并讨论一种可行的方法,以帮助设计工程师设计出
[电源管理]
一种集成<font color='red'>RCC</font>式开关电源器件设计及应用
stm8环境搭建及编译第一个工程
准备: 开发软件:IAR for stm8 固件库:STSW_STM8069_STM8S和STM8A标准外设固件库 实验步骤 1.下载IAR for stm8 ,当进入到IAR官网时(点击上方IAR for stm8链接),显示界面大概如下: 把网页拖到最下面看到下图,点击 download a free trial 将会拉出一个下载按键,这个显示的IAR版本是最新的。本人目前看到的版本为3.10。 下载完成后,根据以往的方式进行安装,然后通过IAR破解工具将其破解。破解目前网上很多随便下载。当然本人自己也提供了下载链接 https://download.csdn.net/download/fangjiaze444
[单片机]
<font color='red'>stm8</font>环境搭建及编译第一个工程
STM8电压表 原理图及源程序 IAR环境
刚刚用STM8S003做了个电压表,互相交流一下。用到了ADC采样及数码管显示。 STM8电压表单片机源程序: #include iostm8s003f3.h unsigned int ms_count; unsigned char adcflag; unsigned int ADCData; unsigned int tmpin; unsigned int ADCBuff ; /******************************************************************************* **函数名称:void GPIO_Init() **功能描述:GPIO- 功能引
[单片机]
<font color='red'>STM8</font>电压表 原理图及源程序 IAR环境
IAR FOR STM8 学习笔记 固件库 GPIO
经过一番挣扎,还是决定使用官方的固件库了。。 从网上下一个STM8S的固件库,记得是FOR IAR的。 找到里面的IAR模板就可以开始用了。 这些都是直接写好的库函数,可以直接调用,但首先得先读懂,先了解些必备知识。 STM8的寄存器的地址 在STM8中,与某个外围设备有关的寄存器在地址上都是顺序排列的;比如与GPIO有关的寄存器有ODR、IDR、DDR、CR1、CR2,与PA口有关的这五个寄存器就被安排在了0x00 5000~0x00 5004这5个地址空间中,它们有一个0x005000的基地址,分别偏移0,1,2,3,4。 ”stm8s.h 中与GPIO有关的定义,以及固件库中访问外围设备寄存器的方法
[单片机]
IAR FOR <font color='red'>STM8</font> 学习笔记 固件库 GPIO
STM32初学笔记1之RCC(下)
前面写过一篇文章: STM32初学笔记之RCC(1) ,在这一篇文章中介绍了系统时钟的设置的几个函数,刚刚突然想追踪SystemInit()的时候才发现,原来我写的这个所谓的RCC_ClkConfig.C和RCC_ClkConfig.H文件一点用处都没有,因为这个在库源文件system_stm32f10x.c中全部都有,而且比我的那个好用很多,所以,哎,我有百忙了。下面就具体显示一下我的这个函数追踪过程吧。 1、首先在主函数中添加一下一条语句: 2、将光标移动到SystemInit()函数上,单击右键,选择 go to the definition of 'SystemInit' 3、我们可以看到这个函
[单片机]
STM32初学笔记1之<font color='red'>RCC</font>(下)
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved