历史上的今天
返回首页

历史上的今天

今天是:2025年08月19日(星期二)

正在发生

2021年08月19日 | 1.13.7_前期编程_系统时间与环型缓冲区_P

2021-08-19 来源:eefocus

系统时间

首先设置一个变量记录系统时间,为了防止溢出使用的是unsigned long long的数据类型,取值范围是0~2^64,计算得到,需要运行50几亿年才会溢出。

在这里插入图片描述
在这里插入图片描述

在定时器中断中累加这个值,可以通过get_system_time_us函数获取系统时间。

在这里插入图片描述

每来一个时钟脉冲(0.2us一个时钟脉冲)计数器减1,再和系统时间变量结合就可以得到us级的系统时间了。

在这里插入图片描述

环型缓冲区

假设有一个char类型的数组,最多保存6个char数据,设置一个读变量r,它表示下一个读元素的下标,设置一个写变量w,它表示下一个写元素的下标,它们的初始值都为0。


那么写数据就是:


buf[w] = val;

w = (w + 1) % len; /* len为数组长度 */


读数据就是:


val = buf[r];

r = (r + 1) % len;


当数组为空时,r == w;


当数组满时,我们使用(w + 1) % len == r来判断;


这是因为如果先将数据放进入,那么满数据时放入数据后,会出现r == w的情况,这与空判断重合了,所以我们在写的下标+1来判断,如果数据没满,那么+1也不会出现r == w。

在这里插入图片描述

顾名思义,环形缓冲区就是一个首位连接在一起的数组,读写到了数组的末尾时又会从数组的开头重复操作。

推荐阅读

史海拾趣

Gravitech公司的发展小趣事

对于电子猜数玩具电路的网友可能提出的问题,我整理了一些常见问题及其回答:

一、电路设计相关问题

  1. 问题:电子猜数玩具电路的基本组成部分有哪些?
    回答:电子猜数玩具电路通常由触摸控制器、多谐振荡器、LED驱动电路和受控声、光电路等部分组成。具体来说,包括时基集成电路(如NE555)、非门集成电路(如CD4069)、计数分配器集成电路(如CD4017)、音乐集成电路、继电器、二极管、发光二极管、电阻器、电容器等元器件。

  2. 问题:如何设计电路以确保游戏能够正确运行?
    回答:设计电路时,需要确保各个部分能够协调工作。例如,触摸控制器负责检测玩家的输入,多谐振荡器产生计数脉冲,LED驱动电路控制LED的显示,受控声、光电路则在玩家猜中数字时发出声音和光信号。设计时还需要注意电路的稳定性和可靠性,避免信号干扰和元件损坏。

  3. 问题:电路中的LED如何布局以实现数字显示?
    回答:LED的布局通常根据要显示的数字范围进行设计。例如,如果要显示0-9的数字,可以使用7段LED数码管或分散的LED灯。7段LED数码管内部含有8个LED小灯(7个用于显示数字段,1个用于小数点或原点),通过控制这些LED的亮灭来显示不同的数字。如果是分散的LED灯,则需要根据数字的形状来布置LED,并通过编程控制它们的亮灭。

二、元件选择与参数设置问题

  1. 问题:如何选择适合的集成电路和元器件?
    回答:选择集成电路和元器件时,需要考虑电路的需求、元器件的性能参数以及成本等因素。例如,时基集成电路可以选择NE555,因为它具有成本低、易于获取和使用的优点;非门集成电路可以选择CD4069,因为它提供了多个非门输出,方便电路设计;发光二极管则需要选择高亮度的型号以确保显示效果良好。

  2. 问题:电阻器和电容器的参数如何设置?
    回答:电阻器和电容器的参数设置需要根据电路的具体需求来确定。电阻器的阻值会影响电流的大小和LED的亮度,因此需要根据LED的电流需求和驱动电压来选择合适的阻值。电容器的容量则会影响多谐振荡器的振荡频率和电路的响应时间,需要根据实际需要进行调整。

三、调试与故障排除问题

  1. 问题:如何调试电子猜数玩具电路?
    回答:调试电路时,可以按照以下步骤进行:首先检查电路连接是否正确,包括电源连接、信号连接和地线连接等;然后使用万用表等工具测试电路中的电压和电流是否正常;最后观察LED的显示和声音输出是否符合预期。如果出现问题,可以逐步排查各个部分,找出故障点并进行修复。

  2. 问题:电路中出现LED不亮或声音不响的故障怎么办?
    回答:如果LED不亮或声音不响,首先需要检查电源是否正常供电;然后检查相关元器件是否损坏或接触不良;最后检查控制信号是否正确传输。如果以上都正常,可能是程序设计或电路布局存在问题,需要进一步检查和调整。

四、拓展与改进问题

  1. 问题:如何增加电子猜数玩具的趣味性和挑战性?
    回答:可以通过增加游戏难度、丰富游戏模式或添加互动元素等方式来增加电子猜数玩具的趣味性和挑战性。例如,可以设置不同的难度等级、增加倒计时功能、设置奖励机制或添加与手机等设备的互动功能等。

  2. 问题:如何对电子猜数玩具电路进行改进以降低成本或提高性能?
    回答:降低成本可以通过选择性价比更高的元器件、优化电路设计、减少不必要的元器件数量等方式实现;提高性能则可以通过升级元器件、改进电路设计、优化算法等方式实现。具体改进方案需要根据实际情况和需求进行制定。

Filtran Ltd公司的发展小趣事

为了寻找新的增长点,Filtran Ltd开始探索跨界合作的可能性。公司与一家领先的物联网解决方案提供商建立了战略合作关系,共同开发面向智能家居市场的无线连接模块。这一合作不仅将Filtran Ltd的滤波器技术应用于新的领域,还为公司带来了全新的市场机遇。通过跨界合作,Filtran Ltd成功实现了从单一产品供应商向综合解决方案提供商的转变。

Advanced Monolythic Ceramics公司的发展小趣事

面对日益严峻的环保压力,Filtran Ltd积极响应可持续发展号召,将环保理念融入产品设计中。公司研发出了一系列绿色滤波器产品,采用可回收材料制造,并在生产过程中减少能源消耗和废弃物排放。这些环保产品不仅满足了市场对高性能滤波器的需求,还赢得了客户的广泛赞誉和信任。Filtran Ltd因此成为了电子行业环保实践的典范。

FERYSTER公司的发展小趣事

在全球环保意识日益增强的背景下,FERYSTER公司积极响应环保号召,推动企业的绿色转型。公司采用环保材料替代传统材料,优化生产工艺减少能源消耗和废弃物排放。此外,公司还积极推广绿色电子产品,引导消费者关注环保问题。这些努力不仅提升了公司的社会形象,也为公司带来了更多的商业机会。

Delta Electronics Manufacturing Corp公司的发展小趣事

Delta非常重视人才的培养和团队建设。公司建立了完善的培训体系,为员工提供多元化的培训和发展机会。同时,Delta还注重团队协作和沟通,鼓励员工分享经验和知识,共同解决问题。这种良好的团队氛围和文化,不仅增强了员工的凝聚力和归属感,也为公司的发展提供了有力的保障。

AEL [AEL Crystals Ltd]公司的发展小趣事

为了提高产品的可用性和客户服务水平,AEL Crystals实施了全面的库存管理政策。公司通过优化库存结构和加强库存监控,确保了产品的及时供应和快速响应客户需求。此外,AEL Crystals还不断提升客户服务质量,为客户提供专业的技术支持和售后服务。这些举措进一步增强了客户对公司的信任和忠诚度。

这五个故事展示了AEL Crystals Ltd公司在电子行业中的发展历程和取得的成就。从创立初期的艰难起步到如今的行业佼佼者,AEL Crystals凭借其卓越的技术、全球化的战略布局、持续的创新以及优质的客户服务赢得了广泛的市场认可。未来,我们有理由相信AEL Crystals将继续保持其行业领先地位,并为电子行业的繁荣发展做出更大的贡献。

问答坊 | AI 解惑

一种新型高电压充电方式

目前对于UPS、EPS、逆变电源等的大功率产品,开发设计者设计的蓄电池逆变电压往往很高。面对由很多蓄电池串联而成的高电压蓄电池组,设计者对蓄电池组的充电往往以市电经过变压器升压后整流或市电整流后经高频电子BOOST升压的传统方式来实现。前者 ...…

查看全部问答>

【讨论】“嵌入式裸奔”、“嵌入式OS”、“OS”各适合什么场合?

如果你只能用的心: A)如果你手上是4位MCU? B)如果你手上是8位MCU? C)如果你手上是16位MCU? D)如果你手上是外设不多的32位MCU? E)如果你手上是外设丰富的32位MCU? F)如果你手上是外设极其丰富的64位MCU? 你要做什么产品: a)如果你 ...…

查看全部问答>

电子变压器

求助: 交流220V转交流110V 20A 的电子变压器型号,哪儿有售? 或上说电子变压器的电路图 谢谢!…

查看全部问答>

74LS08 74LS30中文资料

74LS08    74LS30中文资料…

查看全部问答>

方向识别,高手指导一下!

我在做一个东西,想找一个成本比较的识别方法,来实现识别五米开外的物体。原想用红外源发射接收的但是找了市面上找了都只有开关式的红外,高手指导一下,多谢了~~…

查看全部问答>

EVC的模拟器能否和PC串口上的GPRS模块进行通信?

EVC的模拟器能否和PC串口上的GPRS模块进行通信? 有人做过类似模拟器和PC串口上的设备进行通信的吗?…

查看全部问答>

某PCI设备在已有相应驱动程序的情况下,要添加另一驱动,两驱动并行工作,可以实现吗?

我有一块PCI接口的DSP开发板。PCI接口芯片是AMCC S5933。该PCI板卡已安装了相应的驱动。 我想读写AMCC S5933的配置寄存器和操作寄存器,实现主模式传输。想用Windriver写个简单的驱动程序,并写相应的应用程序,实现配置功能。但是,原来已安装的 ...…

查看全部问答>

一个关于ListCtrl的问题

遇到一些问题。希望各位不吝赐教。先谢过了。 现在有两个界面,称为A和B吧。 通过网口传输数据。在A界面接收数据,然后在B界面通过一个ListCtrl显示 ListCtrl控件选择为report 每接收一个数据就在list中显示一个。 现在的问题是。如果在A界面 ...…

查看全部问答>

有没有人研究过8962的OLED图片显示程序啊

一个人研究的郁闷,过来找大家问问BITMAP_HEADER_SIZE 这个宏定义的是什么?RIT128x96x4ImageDraw()这个函数有人看过吗…

查看全部问答>