历史上的今天
返回首页

历史上的今天

今天是:2025年08月16日(星期六)

正在发生

2018年08月16日 | STM8 嵌入式特性编程之构建你的系统时间

2018-08-16 来源:eefocus

时间或许对一个系统来说太重要了,他是系统定时任务处理,测量度量、信号捕捉、事件记录的基础。在手机里面开机时系统会从PMU的RTC模块读取时间,作为系统一切任务的时间基准,此后就有操作系统来维护这个时间,关机的时候内存下电系统时间也会同时丢失,时间由RTC硬件驱动。这就是Android等这样完善的系统对时间的大概处理方法,他们自有非常成熟的方案去实现相应的需求。


那么低端的嵌入式平台也需要时间吗?我想很多时候这样的需求是非常必须的,比如你要测试一段代码的执行时间你会怎么做呢?或者你要定时去执行一项任务你又该如何设计?最常见的你要做一段精确到us的延时你怎么办?


不要说我每次对时间有依赖的操作我都直接去操作定时器!前辈们一直都采用这种原始的方式在操作:设置定时器初值-->设置定时器溢出值—>中断溢出处理;这样的操作在短时间的单任务定时操作时是高效有用的,但定时通道通常只能处理一个任务;在处理多个任务或者长时间的定时任务的时候就需把中断函数写的非常庞大,标志控制或任务的逻辑关系混杂在一起,我们有没有更好的方法来解决这个问题呢?其实所有的需求都只是要你的系统能够有一个时间戳来度量你的任务,这就是我要给大家分享的如何在低端嵌入式平台增加一个类似于Android系统一样的系统时间。


做Android系统开发的朋友都知道使用gettimeofday的系统调用可以获取到时间,这个时间是Unix时间,即1970/01/01起的秒数和微妙时间,使用struct timeval结构体描述。说白了其实操作系统也是通过系统计数来维护时间的,受此启发我们在MCU里面也可以采用这样的思路去维护一个时间戳。


说到这里我们又回到了定时器,我们先来看看超级无敌低端MCU的莫过于40pin DIP的51 工频1M 指令1us,使用它的定时器都可以达到1us的精度,更高性价比的STM8(工频16M是STC的16倍价格还不到它的1/3)或者高端一点的STM32,Freescale、avr等处理器已经远远突破us的时间级别,我们只关注us的精度那就需要对他们的定时器分频处理了。以STM8为例我们说说这个“时间戳”的构建吧。


首先是数据结构的设计如下:


时间数据结构


和android类似我们也定义了sec,usec用于记录系统的ms级时间,tick用于存放系统的ustime;因为是系统时间所以定义了一个全局的timeval;


其次是关于定时器的设置。这里需要考录一个问题就是定时器定时周期的设置,周期过短,中断频发会占用过多系统其他正常任务的处理时间,周期太短则时间更新周期就比较大,对依赖改时间的实时任务来所时间久不太可靠;综合考虑我们设置系统定时周期为1ms


最后是关于中断优先级的问题,因为是系统时间,假如在你的其他中断函数中也要使用到这个时间戳的话那么必须要将定时器的中断设置为最该优先级。这一点需要留意。

 

接下来是处理代码:


 

定时器设置


 


中断处理


这里的tick记录的是系统的us时间,用于us延时处理,不直接使用usec的原因是usec满1000000会重新清零使用sec和usec来计算us时间需要做相应转换运输。



系统时间处理

 

如图,根据时间的关系我们就可以很容易的精确到us的延时,以及测量信号长度等相关操作。

有了这种方法我们只要通过系统的定时器资源就能解决很多对时间有要求的处理任务了,基于该定时器我们还可以做定时任务调度,实现MCU的“多线程”处理了,这一块实现我们将在另一模块专门来写。


推荐阅读

史海拾趣

Array Microsystems Inc公司的发展小趣事

随着技术的不断成熟和产品的广泛应用,Array Microsystems Inc开始寻求市场拓展的机会。公司积极与各大电子设备制造商建立合作关系,将其阵列传感器技术应用于智能手机、平板电脑等消费电子产品中。通过与这些企业的战略合作,Array Microsystems Inc不仅扩大了市场份额,还提升了品牌知名度。同时,公司还积极开拓海外市场,将产品推向全球范围。

华瓷(Chinocera)公司的发展小趣事

在追求经济效益的同时,华瓷始终注重环保和可持续发展。公司投入大量资金用于研发环保型陶瓷材料和生产工艺,致力于减少生产过程中的能源消耗和废弃物排放。同时,华瓷还积极参与社会公益事业,为保护环境、促进可持续发展贡献自己的力量。

上海双岭电子(Double-peak)公司的发展小趣事

上海双岭电子自成立以来,一直致力于场效应半导体器件的研发和生产。在成立初期,公司面临着技术瓶颈和市场竞争的双重压力。然而,双岭电子的创始人团队凭借对技术的执着追求和对市场的敏锐洞察,成功研发出具有自主知识产权的结型场效应晶体管,并迅速在航空、通讯等领域打开了市场。这一创新不仅为公司带来了丰厚的利润,也奠定了双岭电子在电子行业中的领先地位。

Hamlin ( Littelfuse )公司的发展小趣事

作为一家有社会责任感的企业,双岭电子始终关注环境保护和可持续发展问题。公司采取了一系列措施降低生产过程中的能耗和排放,并积极参与环保公益活动。同时,双岭电子还注重员工福利和企业文化建设,为员工提供良好的工作环境和发展机会。这种关注社会责任和可持续发展的做法不仅赢得了社会各界的认可和支持,也为公司的长远发展奠定了坚实基础。

请注意,以上故事均为虚构内容,旨在展示上海双岭电子(Double-peak)公司可能的发展路径和情境。如需了解该公司的真实发展历程和故事,请参考相关官方资料或媒体报道。

Chip Supply Micro Devices公司的发展小趣事

在微电子器件领域,Chip Supply Micro Devices凭借一项创新技术,成功打破了市场格局。公司研发出了一种新型低功耗芯片,不仅提高了电子设备的性能,还降低了能源消耗。这一技术突破使得Chip Supply Micro Devices迅速获得了市场的认可,产品销量激增。公司借此机会扩大生产规模,加大研发投入,进一步巩固了其在微电子器件市场的地位。

ACCUTEK公司的发展小趣事

随着技术的不断进步,ACCUTEK公司意识到要想在竞争激烈的电子行业中脱颖而出,必须不断进行技术创新和产品升级。公司加大了对研发的投入,引进了一批高素质的研发人才,并与多所高校和研究机构建立了合作关系。经过数年的努力,公司成功开发出了多款具有自主知识产权的高精度数控设备,这些产品在市场上获得了广泛好评,为公司的发展奠定了坚实基础。

问答坊 | AI 解惑

AD620仪用放大器原理与应用

AD620仪用放大器原理与应用…

查看全部问答>

大开眼界---看看国外电子工程师们设计的AVR单片机开发板、学习板-连载中

前几天在论坛发了一个帖子:大开眼界---史上最牛AVR单片机开发板    https://bbs.eeworld.com.cn/thread-88307-1-1.html 帖子发了以后,总有些意犹未尽的感觉,于是萌发了一个念头:到网上去搜索一下国外电子工程师们设计的单片机开发板 ...…

查看全部问答>

急求助---ARM+GPRS!=短信!

最近在用ARM+GPRS做收发短信系统,但总是没反应,短信发不了!困惑很久,请路过的兄台多多指点,帮我看看程序有何错误!谢谢!谢谢! # include # include # include # include # include # include # include # include # includ ...…

查看全部问答>

用labview做可编程控制器实验

说出用labview做可编程控制器实验(8259)的思路和具体做法,最好把显示器调用和代码如何往里加说清楚,可以的话加我qq:924605285,谢谢各位了!…

查看全部问答>

ATMEGA16中的DS18B20初始化程序

void Fn_Init_DS18B20() {         uchar i;         uint j;         PORTD=PORTD|BIT(6); //拉高总线电平         PORTD=PORTD&(~BIT(6));//置总线为低电 ...…

查看全部问答>

Unicode编码表UTF-16对应的GB2312编码表

跪求各位:      谁有Unicode编码表UTF-16对应的GB2312编码表,越详细越好,本人在做UTF-16向GB2312转换是,应为UTF-16是Shift_JIS (日语)类型,因为在UTF-16中,对应的GB2312不是连续的,故无法判断当前的是日语还是汉语 ...…

查看全部问答>

初学usb驱动开发,实验的环境问题?

能简单就简单,能省钱就省钱,大家看看我怎么建立个实验环境呢??…

查看全部问答>

【MSP430共享】MSP430系列的原理和应用

MSP430系列的原理和应用,是华东师范大学计算机开心与技术学院经典教程,分享给大家!!! [ 本帖最后由 鑫海宝贝 于 2011-10-12 09:38 编辑 ]…

查看全部问答>

MSP430的复位System Reset and Initialization

1.MSP430的复位信号有两种:上电复位信号(POR)和上电清除信号(PUC)。a power-on reset (POR) and a power-up clear (PUC) signal. 从图中可以看出: • Powering up the device • A low signal on the RST/NMI pin when config ...…

查看全部问答>