STM8 低功耗模式 STM8应用笔记

合集下载

STM8学习笔记——时钟和GPIO

STM8学习笔记——时钟和GPIO

STM8学习笔记——时钟和GPIO说起STM8 的时钟,那还真是个杯具,用HSI 没问题,切换到HSE 也没问题,就是切LSI 怎么都不行,然后百思不得其解人,然后上论坛求教,才知道还有个选项字节(OPTION BYTE),数据手册上有这么一段描述:选项字节包括芯片硬件特性的配置和存储器的保护信息,这些字节保存在存储器中一个专用的块内。

除了ROP(读出保护)字节,每个选项字节必须被保存两次,一个是通常的格式(OPTx)和一个用来备份的互补格式(NOPTx)要使用内部低速RC 必须将LSI_EN 置1,就是这个地方让我纠结了半天,然后用IAR 将其置1,方法是:进入调试模式,在上面有个ST-LINK,点击,看到OPTION BYTE,左键点进去,右键单击上面的选项,就可更改了,然后全速运行,就写进去了。

STM8 的时钟分为HSI,HSE,LSI,最常用的是HSI,STMS105S4 内置的是16M 的RC,叫fhsi。

它可以分频输出为fhsidiv=fhsi/hsidiv,如果选择其为主时钟源,那么主时钟fmaster=fhsidiv。

CPU 时钟fcpu=fmaster/cpudiv。

可以通过外设时钟门控寄存器CLK_PCKENR1 和CLK_PCKENR2 选择是否与某个外设连接。

好了上个切换内部时钟的源代码,测试通过void CLK_Init(void){ //切换到内部LSI(!!!需要修改选项字节的LSI_EN 为1)CLK_ICKR|=0x08;//开启内部低速RC 震荡while(CLK_ICKR&0x10==0); //LSI 准备就绪CLK_SWR=0xd2; while(CLK_SWCR&0x08==0); //等待目标时钟源就绪CLK_SWCR|=0x02; //CPU 分频设置CLK_CKDIVR=0;//内部RC 输出。

STM8自学笔记

STM8自学笔记

STM8 实战篇
一、参考文档《STM8单片机入门V3.0》安装软件。

建议安装在C盘(默认路径)主要看软件安装和cosmic和STVD的结合使用
二、自己建立C语言工程。

(不使用库文件)
建议先新建文件夹
添加头文件和文件路径
路径在
D:\Program Files\STMicroelectronics\st_toolset\include
Stm8s105k.h中定义了特殊寄存器。

下面开始编写程序
硬件中PE5口有一个LED。

做一个闪烁灯。

在线
使用标准库:
和上面一样建立普通的工程。

从其他以库建立的工程中复制以上文件
其中main 和stm8_interrupt_vector 为替换
添加文件:
继续添加使用模块对应的文件
根据主程序使用的配置来添加响应的东西。

可以建立如下的结构
添加文件为
编译后成功。

当然附件了又demo的程序,大家可以拷贝其中的文件,还可以直接在此文件上写程序。

stm8s和stm8l低功耗对比

stm8s和stm8l低功耗对比

stm8s和stm8l低功耗对⽐stm8s和stm8l低功耗对⽐ 在低功耗应⽤中,⼀般来说mcu是常态halt模式,然后偶尔被唤醒(外部中断或者内部定时唤醒)进⼊运⾏模式。

所以对⽐低功耗性能,⼀般来说只需要对⽐run模式和halt下的功耗即可,因为项⽬选⽤的是通过内部定时器唤醒,所以选⽤active halt mode。

以下是stm8s003和stm8l151在这两种模式下的功耗对⽐:run mode:stm8sstm8l对⽐ 在使⽤同样的16M内部RC振荡器情况下,stm8s 3.7ma,stm8l 3.54ma,两款mcu耗电量差不多。

active halt mode:stm8sstm8l对⽐ 在同样的关闭外设,且使⽤内部低速RC振荡器唤醒的情况下:stm8s 10ua,stm8l 0.54ua。

⼤约有20倍的差距,不过对于要求不是特别⾼的情况下,ua级别的差距影响不会太⼤。

实测:为了实际验证,分别将单⽚机焊接到空板⼦上编写代码进⾏测试。

stm8 编写如下代码:32ms唤醒⼀次主程序:void main(void){CLK_HSECmd ( DISABLE );CLK_SYSCLKConfig(CLK_PRESCALER_HSIDIV1);AWU_DeInit();AWU_Init(AWU_TIMEBASE_32MS);CLK_SlowActiveHaltWakeUpCmd(ENABLE); //关闭活跃停机模式下的电压调节器(MVR)CLK_FastHaltWakeUpCmd(DISABLE); //关闭快速唤醒FLASH_SetLowPowerMode(FLASH_LPMODE_POWERDOWN); //设置为停机后flash掉电GPIO_Init(GPIOA,GPIO_PIN_ALL,GPIO_MODE_OUT_PP_LOW_SLOW);GPIO_Init(GPIOB,GPIO_PIN_ALL,GPIO_MODE_OUT_PP_LOW_SLOW);GPIO_Init(GPIOC,GPIO_PIN_ALL,GPIO_MODE_OUT_PP_LOW_SLOW);GPIO_Init(GPIOD,GPIO_PIN_ALL,GPIO_MODE_OUT_PP_LOW_SLOW);GPIO_WriteLow(GPIOA,GPIO_PIN_ALL);GPIO_WriteLow(GPIOB,GPIO_PIN_ALL);GPIO_WriteLow(GPIOC,GPIO_PIN_ALL);GPIO_WriteLow(GPIOD,GPIO_PIN_ALL);AWU_Cmd(ENABLE);while(1){ halt();}}中断处理程序:INTERRUPT_HANDLER(AWU_IRQHandler, 1){/* In order to detect unexpected events during development,it is recommended to set a breakpoint on the following instruction.*/u8 awu_temp = 0;awu_temp = AWU_GetFlagStatus();}程序下载到单⽚机后,串到台式万⽤表上实测电流11ua,见下图:stm8l 编写如下代码:32ms唤醒⼀次主程序:void main(void){GPIO_Init(GPIOA, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);GPIO_Init(GPIOB, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);GPIO_Init(GPIOC, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);GPIO_Init(GPIOD, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);GPIO_Init(GPIOE, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);GPIO_Init(GPIOF, GPIO_Pin_All, GPIO_Mode_Out_PP_Low_Slow);GPIO_Write(GPIOA,0x00);GPIO_Write(GPIOB,0x00);GPIO_Write(GPIOC,0x00);GPIO_Write(GPIOD,0x00);GPIO_Write(GPIOE,0x00);GPIO_Write(GPIOF,0x00);RTC_DeInit(); //初始化默认状态CLK_PeripheralClockConfig(CLK_Peripheral_RTC, ENABLE); //允许RTC时钟CLK_RTCClockConfig(CLK_RTCCLKSource_LSI, CLK_RTCCLKDiv_1); // 38K/1 RTC_WakeUpClockConfig(RTC_WakeUpClock_RTCCLK_Div2); //38/2=19KRTC_SetWakeUpCounter(19*32); //19*32 32msRTC_ITConfig(RTC_IT_WUT, ENABLE); //开启中断PWR_FastWakeUpCmd(DISABLE); //关闭快速唤醒功能PWR_UltraLowPowerCmd(ENABLE);//超低功耗RTC_WakeUpCmd(ENABLE);while(1){ halt();}}中断处理程序:INTERRUPT_HANDLER(RTC_CSSLSE_IRQHandler,4){/* In order to detect unexpected events during development,it is recommended to set a breakpoint on the following instruction.*/RTC_ClearITPendingBit(RTC_IT_WUT);}将程序下载到单⽚机后,串到台式万⽤表测试电流在4ua左右,见下图:。

STM8L051低功耗模式实现说明文档

STM8L051低功耗模式实现说明文档

STM8L051低功耗模式测试文档STM8L051的五种低功耗模式wait ,low power run mode,low power wait mode,Ative-Halt mode,Halt mode。

1、WAIT mode在等待模式,CPU的时钟是停止的,被选择的外设继续运行。

W AIT mode 分为两种方式:WFE,WFI。

WFE是等待事件发生,才从等待模式中唤醒。

WFI是等待中断发生,才从等待模式中唤醒。

2、low power run mode在低功耗运行模式下,CPU和被选择的外设在工作,程序执行在LSI或者LSE下,从RAM 中执行程序,Flash和EEPROM都要停止运行。

电压被配置成Ultra Low Power模式。

进入此模式可以通过软件配置,退出此模式可以软件配置或者是复位。

3、low power wait mode这种模式进入是在low power run mode下,执行wfe。

在此模式下CPU时钟会被停止,其他的外设运行情况和low power run mode类似。

在此模式下可以被内部或外部事件、中断和复位唤醒。

当被事件唤醒后,系统恢复到low power run mode。

4、Active-Halt mode在此模式下,除了RTC外,CPU和其他外设的时钟被停止。

系统唤醒是通过RTC中断、外部中断或是复位。

5、Halt mode在此模式下,CPU和外设的时钟都被停止。

系统唤醒是通过外部中断或复位。

关闭内部的参考电压可以进一步降低功耗。

通过配置ULP位和FWU位,也可以6us的快速唤醒,不用等待内部的参考电压启动。

一、各个低功耗模式的代码实现1、WAIT mode等待模式分为两种:WFI和WFE。

1.1 WFI mode当执行“wfi”语句时,系统就进入WFI模式,当中断发生时,CPU被从WFI模式唤醒,执行中断服务程序和继续向下执行程序。

通过置位CFG_GCR的AL位,使主程序服务完中断服务程序后,重新返回到WFI 模式。

STM8L低功耗调试方法

STM8L低功耗调试方法

STM8L低功耗调试方法做了一个电池供电的项目,刚开始光想着完成功能,最后再去整低功耗。

看了资料STM8L 的低功耗感觉很好。

结果把自己坑惨了。

因为就这个功能老是实现不了。

着急上火的我,从ST的官网下载了STM8L的代码。

关键词,就一句话:Halt_Init();发现解决不了问题。

又接着看资料。

表示要关闭各路时钟CLK_PeripheralClockConfig(CLK_Peripheral_TIM2, DISABLE);CLK_PeripheralClockConfig(CLK_Peripheral_TIM3, DISABLE);CLK_PeripheralClockConfig(CLK_Peripheral_TIM4, DISABLE);CLK_PeripheralClockConfig(CLK_Peripheral_LCD, DISABLE);想想也是,应该让这些个模块都休息。

把功耗降低。

结果不尽人意。

又找来一句:PWR_UltraLowPowerCmd(ENABLE);还是不行。

又找百度,发现GPIO的设置很重要。

于是,把所有的GPIO全部设为输出。

且都设为与上下拉相对应的电平。

保证没有漏电流。

仍然解决不了问题。

越到后面越急。

发现加了一堆代码。

就是不行。

发现总是有1.27MA的电流。

一直存在。

坑的事情发生了,网上居然很多人都是在这个电流附近。

各种神操作。

两天后(每天只折腾一到二个小时),我奔溃了。

接下来,我静下心来,弄了一个全新的工程。

把代码一小段一小段的加上去试。

终于发现有些有意思的事情了。

原以为,把时钟关闭,这个模块就没有了驱动,就会休息。

就应该省电。

实际上,这个操作是有个过程的,看一下正常的初始化操作(以定时器为例)CLK_PeripheralClockConfig(CLK_Peripheral_TIM4, ENABLE);TIM4_TimeBaseInit(TIM4_Prescaler_16 ,124);TIM4_ITConfig(TIM4_IT_Update , ENABLE);TIM4_Cmd(ENABLE);要求,先打开时钟,然后设好时钟的分频和时钟基数,再打开中断允许,最后开启时钟功能。

STM8学习笔记——初步认识

STM8学习笔记——初步认识

STM8学习笔记——初步认识最近项目要求找个便宜又够用的单片机,本来是想选STC 的,但其实STC 也并不便宜,且调试比较麻烦,而且AD 不是很好,所以选择了STM8。

昨天买来了ST-LINK III,拿了一块STM8S105S4,此单片机有16K ROM,2K RAM,1K 的EEPROM,带10bitADC,定时器(ICOCPWM)和SPI I2C UART 通讯接口,看门狗等,封装为LQFP44。

这款单片机的供电分得很细,主电源、IO 口、模拟供电都分开,这样就可以非常灵活的配置,比如模拟供电可以选用5V 以扩大量程;IO 口可以配置位3.3 或5V 以适应一些设备。

上图中VDD/VSS 引脚用于给内部主电压调节器(MVR)和内部低功耗电压(LPVR)调节器供电。

这两个调节器的输出连接在一起,向MCU 的核(CPU,FLASH 和RAM)提供1.8V 电源(V18)。

在低功耗模式下,系统会将供电电源从MVR 自动切换到LPVR 以减少电流消耗。

为稳定MVR,在VCAP 引脚必须连接一个电容。

该电容应该拥有较低的等效串联电阻值(ESR),电容最小的推荐容值为470nF。

ST-LINK III 管脚定义及接法:ST-LINK III LED 灯三种状态含义:常亮:目标板与ST-LINK 在SWIM 模式或者JTAG/SWD 模式下已经通讯初始化。

闪烁:目标板与ST-LINK 正在进行数据交换。

熄灭:目标板与ST-LINK 没有通讯初始化。

开发平台:还是比较习惯用IAR,查了下果然有IAR for STM8,于是下了并和谐,然后随便写了个程序,下载调试,发现出错,更新ST-LINK III 的固件,无果。

难道是IAR 的问题?于是下载官方的STVD,安装后发现也无法下载,提示是。

基于STM8的低功耗无线通信模块在矿用本安仪器中的应用设计

基于STM8的低功耗无线通信模块在矿用本安仪器中的应用设计
ny . De s i g n t he s y s t e m p o we r s up pl y c i r c ui t a nd i nt r i n s i c a l l y s a f e p owe r s upp l y c i r c u i t w hi c h ha s t h e r mal s hut d ow n f un c t i on
Ab s t r a c t : Be c au s e o f t he c um be r s o me na t u r e o f t h e wi r e d c omm u ni c a t i on, pr e s e n t mi ne i nt r i n s i c a l l y s a f e i ns t r um e nt o f wi r e l e s s c o mm u ni c a t i on . Ba s e d o n l ow— powe r mo dul e o f ST M 8 i m pl e me nt s Fi r s t , i t pr e s e n t s t he o ve r a l l s t r uc t u r e of a wi r e l e s s c o mmu ni c a t i o n s ys t e m ,f o l l o w t he pr i n c i pl e o f s a f e t y, c om p at i b i l i t y,a nd l o w powe r c on s u m pt i on o pt i mi z a t i o n t o t r a ns f o r m t he e xi s t i n g mi ne i nt r i n s i c a l l y s a f e i n s t r u me nt .An a l y z e t he r e al i z a t i on o f mi ne a mo ng i nt r i n s i c a l l y s a f e i ns t r u me nt u s i ng wi r el e s s di gi t a l c o m m un i c at i o ns t e c hn i c a l pr ob l e ms ,i n c l u di ng c o m m un i c a t i o ns pr ot o c o l a nd po we r c on s um p t i o n. The s ys t e m

stm8学习笔记

stm8学习笔记

所用芯片 stm8s105s4开发环境:ST Visual DevelopStm8s的库为V1.1.1CPU频率及所有外设频率/时钟系统复位后,所有外设时钟均处于开的状态。

用户可通过清除CLK_PCKENR1或CLK_PCKENR2中的PCKEN位来关闭相应的外设时钟。

但是在关闭外设的时钟前,用户必须设置相应的位禁用该外设。

为了使能一个外设,用户必须先设置寄存器CLK_PCKENR中对应的PCKEN位,然后设置外设控制寄存器中的外设使能位。

AWU计数器是由独立于fMASTER的内部或外部时钟(LSI或HSE)驱动,因此,即使寄存器的时钟已被关掉,该外设依然可以继续运行。

例如禁用所有外设时钟:CLK_PCKENR1 = 0x00;// close all clks of PeripheralCLK_PCKENR2 = 0x00;开启定时器TIME1定时器时钟:CLK_PCKENR1 |= 0x20; //具体参考STM8S_Reference 59页CPU分频因子:CPU时钟(fCPU)由主时钟(fMASTER)分频而来,分频因子由时钟分频寄存器(CLK_CKDIVR)中的位CPUDIV[2:0]决定。

共7个分频因子可供选择(1至128中,2的幂)。

如图13所示。

fCPU为CPU和窗口看门狗提供时钟。

时钟分频寄存器(CLK_CKDIVR)通用端口GPIO和其他的单片机一样,我是习惯从端口开始学习。

Stm8s105s系列最多有7组I/O端口,A~G,而根据不同的封装可能没有其中的一些,在这里根据具体项目,我选择的是44脚封装的。

使用任何的外设前,我们都要根据需要的将参考手册和数据手册看一边,当然端口也不能另外了。

作为通用的IO口,每一个GPIO端口都有5个对应的寄存器如下表:注意:初始复位时,所有引脚设置为浮空输入。

其中1. Px_ODR是ODR[7:0]:端口输出数据寄存器位;(1)在输出模式下,写入寄存器的数值通过锁存器加到相应的引脚上。

stm8s系列单片机原理与应用

stm8s系列单片机原理与应用

stm8s系列单片机原理与应用STM8S系列单片机原理与应用。

STM8S系列单片机是STMicroelectronics公司推出的一款高性能、低功耗的8位单片机,广泛应用于家电、工业控制、汽车电子等领域。

本文将介绍STM8S系列单片机的基本原理和应用。

首先,我们来了解一下STM8S系列单片机的基本特点。

STM8S系列单片机采用高性能的8位CPU内核,工作频率可达到20MHz,具有丰富的外设资源,包括通用定时器、串行外设接口、模拟数字转换器等。

此外,STM8S系列单片机还具有低功耗特性,可满足对功耗要求较高的应用场景。

在实际应用中,STM8S系列单片机可以广泛应用于各种控制系统中。

例如,可以用于家电控制领域,如空调、洗衣机、微波炉等家电产品的控制系统;还可以应用于工业控制领域,如工业自动化设备、仪器仪表等的控制系统;同时,STM8S系列单片机还可以应用于汽车电子领域,如汽车发动机控制单元、车载娱乐系统等。

在使用STM8S系列单片机进行开发时,我们可以充分发挥其丰富的外设资源和高性能的CPU内核。

通过合理的软件设计和优化,可以实现各种复杂的控制算法和功能。

同时,STM8S系列单片机还提供了丰富的开发工具和软件支持,如ST 公司提供的集成开发环境和编译器,方便开发人员进行软件开发和调试。

除此之外,STM8S系列单片机还具有丰富的通信接口,如SPI、I2C、UART 等,可以方便地与外部设备进行通信,实现系统的扩展和联网。

这些通信接口的灵活应用,使得STM8S系列单片机在各种应用场景下都能够得到充分的发挥。

总的来说,STM8S系列单片机作为一款高性能、低功耗的8位单片机,具有丰富的外设资源和通信接口,广泛应用于家电、工业控制、汽车电子等领域。

在实际应用中,我们可以充分发挥其性能优势和丰富的外设资源,实现各种复杂的控制算法和功能。

同时,ST公司提供的丰富的开发工具和软件支持,也为开发人员提供了便利。

相信随着技术的不断发展,STM8S系列单片机在各个领域的应用将会更加广泛。

STM8低功耗

STM8低功耗

首先,STM8有三种低功耗模式,即等待、活跃停机和停机。

具体它们三者有什么区别自己看官方手册去吧,这里只讲停机模式的应用,其他的一笔带过!一、进入的方式:等待模式进入用的指令是WFI,而活跃停机和停机用的都是halt(),所不同的是,在执行halt指令之前,如果开启了AWU,则是活跃停机,反之则是停机。

还有一点要说明的是,在停机模式下独立看门狗是不能养的,而只能养窗口看门狗。

二、具体进入的步骤:1、首先,你声明一个标志位,名字自己取。

这个标志位是用来判断系统是该处于运行模式还是处于停机模式的。

我这里用fPowerOn_flag,如下:bool fPowerOn_flag = FALSE;有了这个标志位以后就写下面的部分了:int main(void){//设置内部16M晶振为系统时钟Clk_Init(); //系统时钟初始化函数MWWDG_Init();//窗口看门狗初始化函数while (1){Free_WWDG();//喂狗函数if(fPowerOn_flag == FALSE){Halt_OffDevice();//停机前关闭不需要的外设halt();//进入停机模式System_Init();//系统初始化函数}if(fPowerOn_flag){//运行代码在这里添加}}}以上就是一个停机模式的模板了,大家参照着用就可以了。

系统上电默认是进入停机模式,然后通过按键唤醒进入运行模式。

下面为大家讲一下主函数中每个函数的写法和功能吧!2、各函数说明:a、时钟初始化函数:void Clk_Init(void){CLK_DeInit();//复位时钟寄存器CLK_HSICmd(ENABLE);//使能内部高速时钟CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV4);//配置内部高速时钟(时钟分频器:4分频),系统时钟4MHzCLK_ClockSecuritySystemEnable();//开启时钟安全系统这个函数我想不用多讲了,大家都懂的。

stm8s系列单片机原理与应用

stm8s系列单片机原理与应用

stm8s系列单片机原理与应用STM8S系列单片机原理与应用。

STM8S系列单片机是STMicroelectronics公司推出的一款低功耗、高性能的8位微控制器,广泛应用于家电、工业控制、汽车电子等领域。

本文将介绍STM8S系列单片机的原理和应用。

首先,我们来了解一下STM8S系列单片机的基本原理。

STM8S系列单片机采用了高性能的内核,具有丰富的外设资源和丰富的通信接口,能够满足各种应用需求。

其低功耗特性使其在电池供电和节能应用中具有很大优势。

此外,STM8S系列单片机还具有较强的抗干扰能力和较高的可靠性,能够适应各种恶劣环境下的工作要求。

其次,我们将介绍STM8S系列单片机的应用。

在家电领域,STM8S系列单片机广泛应用于洗衣机、冰箱、空调等产品中,实现控制、显示、通信等功能。

在工业控制领域,STM8S系列单片机可用于工业自动化设备、传感器控制、电机驱动等方面。

在汽车电子领域,STM8S系列单片机可用于车身控制、发动机控制、车载娱乐系统等应用。

除此之外,STM8S系列单片机还可以应用于智能家居、智能穿戴设备、医疗设备等领域。

除了以上应用领域,STM8S系列单片机还可以在各种嵌入式系统中发挥作用。

其丰富的外设资源和通信接口,使其能够与各种外部设备进行连接和通信,满足不同应用的需求。

同时,STM8S系列单片机的低功耗特性也使其在一些对电池供电和节能要求较高的应用中具有优势。

总的来说,STM8S系列单片机具有高性能、低功耗、抗干扰能力强、可靠性高等特点,适用于各种应用领域。

随着物联网、智能制造等新兴领域的发展,STM8S系列单片机将有更广阔的应用前景。

希望本文对您了解STM8S系列单片机的原理和应用有所帮助。

STM8S系列单片机原理与应用复习.doc

STM8S系列单片机原理与应用复习.doc

STM8S系列单片机原理与应用复习第1章基础知识1.1计算机的基本认识(11)地址总线,寻址范围,STM8寻址2陀16MB y (2)数据总线,字长,STM8为8位单片机J3)控制总线Q)时钟周期Y(2)机器周期:完成一个基本动作的时间。

1(3)指令周期:一条指令所需的时间。

STM8S: 一个机器周期仅包含一个时钟周期。

1. 1. 1计算机系统的工作过程及其内部结构ALU:算术运算和逻辑运算存储器:ROM, RAM1.1.2指令、指令系统及程序指令:操作码+操作数STM8:属CISC1・2寻址方式确定指令中操作数所在存储单元地址的方式,就称为寻址方式。

2.4 了解单片机特点及其发展趋势第2章STM8S系列MCU芯片内部结构P21STM8S103, STM8S105, STM8S207, STM8S208STM8S103(EEPR0M 64kB), STM8S003(EEPROM 128kB), ID2. 1 STM8S系列MCU性能概述16M地址空间,I/O引脚输入/输出可编程选择,内置HSI各LSI。

内核:高级STM8内核,具有3级流水线的哈佛结构扩展指令集存储器@中等密度程序和数据存储器:@ —最多32K字节Flash; 10K次擦写⑥55° C环境下数据可保存20年◎—数据存储器:多达1K字节真正的数据EEPROM;可达塑万次擦写@ RAM:多达2K字节时钟、复位和电源管理⑥3.L5.5V工作电压,内核电压1.8V, Vcap⑥灵活的时钟控制,4个主时钟源⑥-低功率晶体振荡器⑥-外部时钟输入⑥-用户可调整的内部16MHz RC令-内部低功耗128kHz RC⑥带有时钟监控的时钟安全保障系统电源管理:⑥-低功耗模式(等待.活跃停机、停机)@ -外设的时钟可单独关闭⑥永远打开的低功耗上电和掉电复位中断管理⑥带有32个中断的嵌套中断控制器⑥6个外部中断向量,最多37个外部中断定时器2个16位通用定时器,带有2+3个CAPCOM通道(IC、0C或PWM)@高级控制定时器:16位,4个CAPCOM◎通道,3个互补输出,死区插入和灵活的自动唤醒定时器2个看门狗定时器:窗口看门狗和独立看门狗通信接口⑥ 带有同步时钟输出的UART ,智能卡,红外IrDA, LIN接口<$> SPI 接口最高到8Mb i t/s⑥12C接口最高到400Kb i t/s2. 2 STM8S系列MCU内部结构P222. 2. 1 STM8 内核CPU P24PC 为24位,可寻址224=1 6Mb累加器(A),堆栈指针(SP),索引寄存器(X 和Y), 条件码寄存器(CC):令 V: OverflowH: Half-carry令 N: NegativeZ: Zero令 C: Carry ® IO, 11: interruptmasklevel 0, 12.2.2 STM8S 封装与引脚排列2.3掌握通用I/O 口 GPIO 初始化P31•可选择的输出模式:推挽式输出和开漏输出 PB_DDR, PB_CR1,PB_CR22. 3. 1 2.3.2 2.3.3 2.3.4 I/O 引脚结构I/O 端口数据寄存器与控制寄存器输入模式 输出模式 每一个端口都有一个输出数据寄存器(ODR), 一个引脚输入寄存器 (IDR)和一个数据方向寄存器(DDR)总是同相关的。

STM8S功耗管理(设计通法)

STM8S功耗管理(设计通法)

STM8S功耗管理(设计通法)这篇文章我们聊下功耗管理,不仅仅是STM8S,51,32,等等单片机都绕不过这个坎,在文章最后试图给出一些设计的通法。

对于由电池供电的系统来说,功耗是非常重要的指标。

通常,要求系统的平均功耗小于某个目标值来保证一个适当的电池续航时间。

这意味着系统可以在短时间内功耗较大,而把平均功耗维持在目标值以下。

在互补金属氧化物半导体(CMOS)数字逻辑电路中,功耗为下列因子之和:●静态功耗(主要由晶体管的偏置电流和漏电流产生)●动态功耗,取决于电源电压和工作时钟频率,按照下面公式:动态功耗 = CV^2f,其中─ C为CMOS负载电容─ V为电源电压─ f为时钟频率在CMOS逻辑电路以一定时钟频率运行时,静态功耗与动态功耗相比是可以忽略的。

但在一些低功耗模式下,时钟不再运行,此时静态功耗是主要的功耗源。

因此,功耗主要取决于:●微控制器单元(MCU)的芯片面积:所采用的工艺,晶体管的数量,片上集成和使用的模拟功能/外设。

●MCU电源电压:CMOS逻辑电路中消耗的电流与电源电压的平方成正比。

因此,可以通过降低供电电压来降低功耗。

●时钟频率:在不要求进行高速处理的应用中,降低时钟频率可以降低功耗。

●激活的外设数目或使用的MCU功能数目(CSS、BOR、PVD……):激活的外设数目越多,或使用的MCU功能数目越多,则功耗越大。

●工作模式:功耗会随着应用所处的不同功耗模式而改变(CPU开启/关闭,晶振开启/关闭……)。

系统在3v-5.5v之间,其实是比较宽的,看框图有两个稳压器。

就分为内外两种完整的时钟树从这里输入主时钟源(f MASTER )为内核和外设提供时钟,只读寄存器CLK_CMSR包含了当前主时钟源的选择信息。

可以读出来。

这些就是时钟管理STM8S的时钟管理起来比较自由,随便的开关。

给大家表演个封装库。

先搞个转换用的宏函数.从基地址开始+相应的偏移地址就算封装好啦!偏移的地址在数据手册里面,是0。

结合STM8谈谈低功耗MCU编程的基本思想

结合STM8谈谈低功耗MCU编程的基本思想

结合STM8谈谈低功耗MCU编程的基本思想
1.前言
 工作之后接触了低功耗,开始搜索各种各样的低功耗MCU。

网络是一个非常自由的地方,你总可以看到各种关于哪个MCU功耗更低的论战,在这些论战中我查阅了几乎所有低功耗MCU的特性,例如MSP430、EFM32还有STM32L等,网络论战的核心便是哪款MCU的休眠电流更低。

看多了资料我便发现,这些低功耗的MCU如何使用,低功耗MCU的程序编写和普通MCU编程有什幺区别。

 带着这些疑问我继续品味关于低功耗MCU的论战,直到我购买了《MSP430系列单片机系统工程设计与实践》。

在该书中提到了低功耗MCU 编程的基本思想,大致可以总结为:
1.善用节拍
2.消除阻塞。

STM8芯片静态电流的问题

STM8芯片静态电流的问题

Stm8芯片低功耗的问题:
除了运行模式,可以采用以下三种低功耗模式:等待、主动停机、停机。

其中停机模式的低功耗最低。

停机模式:CPU和片上设备完全停止工作,定时唤醒单元AWU也停止,仅由外部中断及复位唤醒,耗电6uA~66uA。

要低功耗设计,主要考虑几个方面:
1.外设的低功耗,不需要的外设模块,全部关闭。

2.GPIO的处理,不需要的IO最好做悬浮输入处理。

3.主时钟的处理,先降到最低内部LSI时钟,关闭其他不需要的时钟模块。

4.进入低功耗模式。

如果在进入低功耗之前把所有无用的IO口全部配置成输出拉低状态,外围需要的IO 口配置成相对应的状态,那么你的板子低功耗应该是没有问题的;若是进入低功耗之前没有再次对IO口进行配置,只是在刚上电初始化时配置了一下,那你的板子低功耗很大可能存在问题的。

最近在测睡眠低功耗的问题,但是测试中会存在差异性的问题,和芯片有关系,有的芯片能过,有的不能过,很是奇怪,查了好长时间,终于发现了问题。

原来是DEBUG/SWIM 脚有问题,如果对这个脚不管不顾,那么它的状态就是默认输入状态,由于DEBUG/SWIM 脚是程序调试脚,既有输出功能又有输入功能,如果睡眠时,这个脚的状态是悬空状态,那么DEBUG/SWIM脚的状态就会存在不确定性,这种状态下有的暗电流就会浮动(个人觉得和芯片的整体性能有关,有的芯片有浮动,有的芯片没有).
举例说明:
假如你的板子进入低功耗时,如下图所示,Q10时断开的,也就是说IGN_ON是和
VDD_5V是间接导通的,IGN_ON是和单片机引脚相连的,此时为了安全起见(确保功耗是最小的),应设对应的单片机引脚为输出高。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

STM8 低功耗模式STM8应用笔记
四种STM8低功耗模式的主要特性如表12。

(表12:STM8S低功耗模式管理)
1.如果外设时钟未被关闭
2.包括通讯外设的中断(参见中断向量表)
STM8等待(Wait)模式
在运行模式下执行WFI(等待中断)指令,可进入等待模式。

此时CPU停止运行,但外设与中断控制器仍保持运行,因此功耗会有所降低。

等待模式可与PCG(外设时钟门控),降低CPU时钟频率,以及选择低功耗时钟源(LSI,HSI)相结合使用,以进一步降低系统功耗。

参见时钟控制
(CLK)的说明。

在等待模式下,所有寄存器与RAM的内容保持不变,之前所定义的时钟配置也保持不变(主时钟状态寄存器CLK_CMSR)。

当一个内部或外部中断请求产生时,CPU从等待模式唤醒并恢复工作。

STM8停机(Halt)模式
在该模式下主时钟停止。

即由fMASTER提供时钟的CPU
及所有外设均被关闭。

因此,所有外设均没有时钟,MCU
的数字部分不消耗能量。

在停机模式下,所有寄存器与RAM的内容保持不变,默认
情况下时钟配置也保持不变(主时钟状态寄存器
CLK_CMSR)。

MCU可通过执行HALT指令进入停机模式。

外部中断可将MCU从停机模式唤醒。

外部中断指配置为中断输入的GPIO 端口或具有触发外设中断能力的端口。

在这种模式下,为了节省功耗主电压调节器关闭。

仅低电压调节器(及掉电复位)处于工作状态。

快速时钟启动
HSI RC的启动速度比HSE快(参见数据手册中电特性参数)。

因此,为了减少MCU的唤醒时间,建议在进入暂停模式前选择HSI做为fMASTER的时钟源。

在进入停机模式前可通过设置内部时钟寄存器CLK_ICKR
的FHWU位选择HSI做为fMASTER的时钟源,而无需时钟切换。

参见时钟控制章节。

STM8活跃停机(Active Halt)模式
活跃停机模式与停机模式类似,但它不需要外部中断唤醒。

它使用AWU,在一定的延时后产生一个内部唤醒事件,延迟时间是用户可编程的。

在活跃暂停模式下,主振荡器、CPU及几乎所有外设都被停止。

如果AWU和IWD已被使能,则只有LSI RC与HSE 仍处于运行状态,以驱动AWU和IWD计数器。

为进入活跃停机模式,需首先使能AWU(如AWU章节所述),然后执行HALT指令。

主电压调节器自动关闭
默认情况下,为了从活跃停机模式快速唤醒,主电压调节器处于激活状态。

但其电流消耗是不可忽视的。

为进一步降低功耗,当MCU进入活跃停机模式时,主电压调节器可自动关闭。

通过设置内部时钟寄存器CLK_ICKR的
REGAH位可实现此功能。

此时:
MCU内核由低功耗电压调节器(LPVR)供电(如同停机模式)。

仅LSI时钟源可用,因为HSE时钟源对于LPVR来说电流消耗太大。

在唤醒时主电压调节器重新被打开,这需要一个比较长的唤醒时间(参见STM8数据手册电特性部分唤醒时间与电流消耗的相关数据)。

快速唤醒时钟
如停机模式所述,为了缩短唤醒时间,建议使用HSI做为fMASTER的时钟源。

FHWU位也可用于缩短切换时间。

在活跃停机模式下,快速唤醒是很重要的。

这可以提高CPU 的执行效率,使MCU处于运行状态与低功耗模式之间的时间最短,从而减少整体平均功耗。

相关文档
最新文档