Atomthreads像众多操作系统一样,在没有任务调度是会调用idle。
static void atomIdleThread (uint32_t param)
{
/* Compiler warning */
param = param;
/* Loop forever */
while (1)
{
/** todo Provide user idle hooks*/
}
}
atomthreads中atomIdleThread()是以线程的形式存在,也就是最低优先级线程。作者默认没有填写这个函数。
uint8_t atomOSInit (void *idle_thread_stack_top, uint32_t idle_thread_stack_size)
{
uint8_t status;
/* Initialise data */
curr_tcb = NULL;
tcbReadyQ = NULL;
atomOSStarted = FALSE;
/* Create the idle thread */
status = atomThreadCreate(&idle_tcb,
IDLE_THREAD_PRIORITY,
atomIdleThread,
0,
idle_thread_stack_top,
idle_thread_stack_size);
/* Return status */
return (status);
}
针对STM8我们最自然想到的是在其中加一个wfi,STM8进入wfi模式几乎不会影响任何外设的运行。以STM8S105K4为例,其进入该模式的典型电流是1.8mA。这个电流,用一节2000mA手机供电,理论上也最多能坚持46天,才一个月多点。这个记录太差了。
STM8还有一个HALT模式,这是该芯片的最低功耗模式,电流是uA级别。但是该模式有诸多限制,进入该模式系统几乎所有的clock都停止,你的timer,adc,uart等等全部停止,除了AWU。
atomthreads如果你在idle直接进入HALT,因为基本只有外部中断可以唤醒退出这个模式,当系统醒来了,请你想想,你的系统心跳还准么?你的应用线程如果使用了定时器,本来希望1秒钟后调用某个CALLBACK,结果HALT睡了5分钟,那还是定时器API本身参数的意义么?
对datasheet熟悉的读者可能,可能立刻想到了AWU,似乎可以解决这个问题。在idle进入HALT前,把还能睡的时间填入AWU,这样系统就可以在制定的时间被唤醒。粗略的一看,还以为问题解决了。
暂时不谈AWU的时间不是任意值都可以接受的,是一个非常不准确的唤醒时钟。
我给你举个其他例子,如果idle进入HALT前,系统还可以睡20分钟,我觉的一个设计优良的低功耗系统,应用层让系统有睡20分钟的可能性是很起码的。不幸的是,在5分钟的时候,一个外部中断进来了,系统很自然退出HALT。我想问你,从系统的角度看,系统之前睡了多久。不要告诉玩我是5分钟,大哥,那是我假设的,我问得是,从系统的角度。睡了多久?AWU这个唯一在运行的模块,上面是没有时间让你读的,你完全无法得知刚才睡了多久。
其实上面的这个理念不是我创造的,在linux中早就有了,它叫variable tick timer,什么意思?通常我们的心跳时钟,是有规律的触发中断,比如10ms一次,这导致系统最多能安静10ms,想多睡会儿?没门!10ms后中断就来了。这种设计对低功耗是不利的。后来就有大牛,引入了variable tick timer,这里tick timer就是我们上面一直说的心跳时钟。variable就是可变的罗!表面意思就是我们的心脏可以走走停停,这样想已经不符合人类的自然规律,所以也确实不能再叫heart beattimer。当系统醒的时候,是有规律的跳动,当系统睡眠的时候, timer就停跳。其实就是上面想实现的东西。
关键字:Atomthreads STM8S 低功耗
引用地址:
Atomthreads关于STM8S低功耗的思考
推荐阅读最新更新时间:2024-11-06 16:16
支持低功耗广域通信(LPWA)的双模无线通信LSI“ML7404”
全球知名半导体制造商ROHM集团旗下的蓝碧石半导体开发出无线通信LSI“ML7404”,该产品非常适用于作为IoT无线通信的新领域被寄予厚望的低功耗广域网络(LPWA:Low Power Wide Area)。下面就随半导体小编一起来了解一下相关内容吧。 概要 全球知名半导体制造商ROHM集团旗下的蓝碧石半导体开发出无线通信LSI“ML7404”,该产品非常适用于作为IoT无线通信的新领域被寄予厚望的低功耗广域网络(LPWA:Low Power Wide Area)。 ML7404是业界首款支持LPWA双模的无线通信LSI。在使用无需授权的SubGHz频段的LPWA中,不仅支持在全球30多个国家和地区被广为采用、在日本国内
[半导体设计/制造]
低功耗2.4GHz无线通信系统的设计与实现
1 引言 近距离无线通信正逐渐引起越来越广泛的注意。飞利浦公司最近联合诺基亚和索尼成立了近距离无线通信论坛,以实现各种移动设备、消费电子、智能检测等设备的交互式通信。低功耗、微型化是当前无线通信产品尤其是便携产品的迫切要求和关键问题。无线通信的另一个关键问题是数据传输的可靠性,这取决于诸多因素,如频率选择、同频干扰、传输距离、天线选择等,这些在设计无线通信系统时都要认真考虑和比较。 本文描述了一种基于nRF24E1 收发芯片的2.4GHz无线收发系统,采用存储转发的数据传输格式和固定式跳频的抗干扰模式,数据输出速率达1Mbps,输出功率1mW, 视距传输距离超过100米,可应用在工业传感网络、远距离遥控、停车
[网络通信]
低功耗模拟前端MAX5865的电路设计
超低功耗、高集成的模拟前端芯片MAX5865是针对便携式通信设备例如手机、PDA、WLAN以及3G无线终端 而设计的,芯片内部集成了双路8位接收ADC和双路10位发送DAC,可在40Msps转换速率下提供超低功耗与更高的动态性能。芯片中的ADC模拟输入放大器为全差分结构,可以接受1VP-P满量程信号;而DAC模拟输出则是全差分信号,在1.4V共模电压下的满量程输出范围为400mV。利用兼容于SPITM和MICROWIRETM的3线串行接口可对工作模式进行控制,并可进行电源管理,同时可以选择关断、空闲、待机、发送、接收及收发模式。通过3线串口将器件配置为发送、接收或收发模式,可使MAX5865工作在FDD或TDD系统。在TDD
[模拟电子]
STM8S学习01——SPI&IIC
1、温习IIC总线协议 1)I2C 总线的一些特征 1 只要求两条总线线路 一条串行数据线 SDA 一条串行时钟线 SCL 2 每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机 从机关系软件设定地址 主机可以作为主机发送器或主机接收器 3 它是一个真正的多主机总线 如果两个或更多主机同时初始化数据传输可以通过冲突检测和仲裁,防止数据被破坏 4 串行的 8 位双向数据传输位速率在标准模式下可达 100kbit/s 快速模式下可达 400kbit/s 高速模式下可达 3.4Mbit/s 5 片上的滤波器可以滤去总线数据线上的毛刺波 保证数据完整 6 连接到相同总线的 IC 数量只受到总线的最大电容 400pF 限制
[单片机]
TMS320C203在高性价比、低功耗短波数字化接收机中的应用
摘要: 数字信号处理技术应用于短波通信领域已成为趋势,TI公司在90年代中后期推出了TMS320C2XX系列的DSP芯片,从而使便携式战术接收机数字化成为可能。本文介绍了一种高性能、低功耗的TMS320C203 DSP芯片的结构组成以及实现战术接收机数字化改造的软、硬件方案,并成功地研制了样机。
关键词: 短波通信 战术接收机 数字信号处理 TMS320C203
1 引言
在短波通信领域,短波数字化接收机以其强大的优势正逐步取代传统的模拟接收机,它采用先进的DSP技术和高精度A/D电路来完成对中频信号的滤、边带分离、放大、解调、AGC控制等功能。与传统的模拟机相比,短波数字化接收
[网络通信]
10BASE-T1L MAC-PHY如何简化低功耗处理器以太网连接
简介 本文介绍如何利用10BASE-T1L MAC-PHY连接越来越多的低功耗现场设备和边缘设备。此外,本文还将详细说明何时使用MAC-PHY与10BASE-T1L PHY以及这些系统如何满足未来的以太网互联制造和楼宇安装要求。 背景信息 随着越来越多的设备需要接入以太网,流程、工厂和楼宇自动化应用中的单对以太网10BASE-T1L用例(包括以太网APL)不断扩展。随着互联设备增加,更高级别的管理系统可以使用更丰富的数据集,从而使生产效率得以显著提高,同时降低了运营成本和能耗。以太网至现场或边缘的愿景是将所有传感器和执行器连接到一个融合IT/OT网络。实现这一愿景存在系统工程方面的挑战,因为其中一些传感器受功率和空间的
[网络通信]
TM1638测试程序STM8S
//适用于STM8S003F3 //main.c 文件 //实验现象:刚开始上电时,所有数码管亮且显示0;按下按键其对应的数码管数字加一,对应的LED灯亮 #include stm8s.h #include tm1638.h unsigned char num ; //各个数码管显示的值 int main(void) { u8 i; init_TM1638(); //初始化TM1638 for(i=0;i 8;i++) Write_DATA(i 1,tab ); //初始化寄存器(所有数码管上电时均显示0) while(1) {
[单片机]
低功耗蓝牙的技术解析
蓝牙技术凭借其普遍性与简洁性改变了设备之间的无线通信。设备可通过蓝牙进行高度安全的无线通信。由于其功耗与成本较低,蓝牙在从高速汽车设备到复杂医疗设备等应用领域的发展过程中发挥着至关重要的作用。 蓝牙的便捷性以及全球认可度,使任何支持蓝牙的设备都能通过配对流程与邻近的其他设备连接。配对后的设备可建立全双工通信,通过被称为“微微网”的短程专用网络传输数据和语音。微微网最多可连接八台设备,其中一台设备作为主设备,其他设备作为网络/微微网内的从属设备。主设备作为集线器,从属设备通过主设备互相通信。蓝牙技术的另一大重要特征,就是使用跳频来减少干扰的影响。 蓝牙技术全双工通信能力为用户提供了诸多创新功能,比如连接手机与蓝牙音箱、开车时的免提电
[嵌入式]