历史上的今天
返回首页

历史上的今天

今天是:2024年08月31日(星期六)

2018年08月31日 | STM32软件定时器的设计

2018-08-31 来源:eefocus

  定时器分为硬件定时器和软件定时器,几乎所有的微控制器上都配备了数量有限的硬件定时器,即控制器本身有专门实现定时的模块。几乎所有的硬件定时器的工作原理都是一样的:定时器在外部时钟提供的周期脉冲下进行计数工作,当计数到用户指定的次数时,就产生一次中断。这个过程完全由微控制器内部的定时器硬件电路实现,不需要 CPU 干预。 

  相比之下,软件定时器则需要 CPU 的介入来实现了。实现软件定时器一般有两种方法:一种是纯粹依赖 CPU 指令的堆积来实现;另一种是以硬件定时器产生的时间片为基准单位,CPU 基于这个基准单位进行累积来实现。 

  显然,硬件定时器的精度取决于驱动的时钟脉冲,一般情况下可以达到很高的精度(纳秒级),而软件定时器的实现由于引入了非硬件因素,精度必然有所下降。 

   

  在嵌入式应用中,经常使用定时器进行定时,当定时时间到达之后执行预定的操作。一个具体的嵌入式系统可能有几个甚至数十个定时应用,而这些应用对定时器的精度、最大周期等要求往往都是不同的。比如使用定时器产生一个准确频率的方波是对定时精度比较高的应用,而使用定时器定时翻转一个用户指示灯以表示当前设备的工作状态,则对定时器精度的要求大为下降,这时如果启用硬件定时器无疑是一种资源的浪费。所以,在一个具体的嵌入式系统中,硬件定时器和软件定时器配合使用,是提高性能和降低成本的有效方法。 

  那么,在 STM32 中如何利用一个硬件定时器构建多个软件定时器呢? 

  我们来分析软件定时器的基本需求:在嵌入式应用中,对定时器的使用模式一般是“定时时间到达后执行预定的操作”。所以需要解决如下一些问题: 

  1、 定时多久?——定时时间必须是可配置修改的; 

  2、 定时时间到达后做什么?——需要指定执行函数; 

  3、 定时器如何工作?——可以选择单次执行或循环执行。


  具体实现如下: 

【头文件 softtimer.h】

#ifndef __SOFT_TIMER_H__

#define __SOFT_TIMER_H__


#include "stm32f10x.h"


/* 单次执行 */

#define TIMER_ONESHOT   0

/* 循环执行 */

#define TIMER_PERIOD    1


/* 软件定时器结构体信息块 */

typedef struct __TIMER

{

    u32 Timeoutcnt;  // 表示定时器软件计数变量

    u32 Timeout;     // 表示定时器单次定时周期

    void (*Timeoutfunc)(void *parameter); // 定时到达后的执行函数

    void *Parameter; // 执行函数的参数

    u8 Timerflag;    // 表示定时器处于单次执行模式还是循环执行模式

}Timer_typedef;


extern Timer_typedef TimerList[10];

/* 初始化软件定时器 */

extern void TIMER_TimerInitialisation(void); 

/* 启动一个软件定时器 */

extern void \

TIMER_TimerStart(u8 TimerIdent, \

                 u32 Timeout, \

                 void (*Timeoutfunc)(void *parameter), \

                 void *parameter, \

                 u8 flag);

/* 用于判断定时时间是否到达,并执行对应函数 */

extern void TIMER_Execute(void);


#endif


推荐阅读

史海拾趣

复旦微电子(FM)公司的发展小趣事

在电子行业中,台湾双羽公司凭借其卓越的技术实力与不懈的创新精神,逐步发展成为行业内的佼佼者。以下是五个关于台湾双羽公司发展起来的相关故事,每个故事均基于事实描述,且字数达到要求。

1. 技术合作的起点

故事概述:台湾双羽公司的发展历程可以追溯到1973年,这一年,公司与日本福岛双羽电机公司建立了技术合作关系。这一合作不仅为双羽带来了先进的电阻器制造技术,还为其后续的产品开发和品质提升奠定了坚实基础。通过引进日本的高品质电阻器生产工艺和管理经验,双羽迅速在电阻器市场上站稳了脚跟,并逐渐发展成为业界的佼佼者。

细节补充:在技术合作的初期,双羽公司派遣了多名技术人员前往日本学习,他们不仅掌握了电阻器的核心制造技术,还带回了严谨的生产流程和质量控制标准。这些宝贵的经验和技术积累,为双羽公司后续的创新发展提供了有力支持。

2. 多元化产品线的拓展

故事概述:随着技术的不断积累和市场的逐步扩大,台湾双羽公司开始积极拓展多元化产品线。公司不仅继续深耕电阻器领域,还逐步涉足电容器、电感器等电子元器件的研发和生产。通过多元化产品线的拓展,双羽公司进一步巩固了其在电子行业的地位,并为客户提供了一站式电子元器件解决方案。

细节补充:在多元化产品线的拓展过程中,双羽公司始终坚持技术创新和品质至上的原则。公司不断投入研发资金,引进先进生产设备和技术人才,确保每一款产品的性能和质量都能达到行业领先水平。同时,双羽公司还建立了完善的质量管理体系和售后服务体系,为客户提供全方位的支持和服务。

3. 全球化布局的实现

故事概述:为了更好地服务全球客户并拓展国际市场,台湾双羽公司开始实施全球化布局战略。公司先后在苏州、深圳等地设立生产基地和销售中心,并逐步将产品和服务推向海外市场。通过全球化布局的实现,双羽公司的品牌影响力和市场份额得到了显著提升。

细节补充:在全球化布局的过程中,双羽公司充分考虑了不同地区的市场需求和文化差异。公司针对不同地区的客户需求制定了个性化的产品方案和服务策略,并加强与当地经销商和合作伙伴的合作与交流。这些措施不仅提升了双羽公司的市场竞争力,还为其在全球范围内的快速发展奠定了坚实基础。

4. 创新驱动的发展模式

故事概述:台湾双羽公司始终将创新作为企业发展的核心驱动力。公司不断投入研发资源和技术力量,推动新产品、新技术和新工艺的研发与应用。通过创新驱动的发展模式,双羽公司在电阻器及其他电子元器件领域取得了多项重大技术突破和专利成果。

细节补充:在创新驱动的发展模式下,双羽公司建立了完善的创新体系和激励机制。公司鼓励员工积极参与创新活动并提出合理化建议和意见;同时与高校、科研机构等外部合作伙伴建立紧密的合作关系;共同开展技术研发和人才培养工作。这些措施不仅激发了员工的创新热情和工作积极性;还为公司带来了源源不断的创新动力和发展活力。

5. 社会责任的践行

故事概述:台湾双羽公司在追求经济效益的同时,始终不忘履行社会责任。公司积极参与公益事业和社会活动;为当地经济发展和社会进步做出了积极贡献。通过践行社会责任;双羽公司不仅赢得了社会各界的广泛赞誉和尊重;还进一步提升了企业的品牌形象和知名度。

细节补充:在社会责任的践行过程中;双羽公司注重环保和可持续发展。公司采用先进的生产工艺和设备;减少能源消耗和废弃物排放;实现绿色生产和循环发展。同时;双羽公司还积极参与环保公益活动;倡导绿色消费和低碳生活理念;为构建美好家园贡献自己的力量。

Circuit Technology Inc公司的发展小趣事

随着市场竞争的加剧,CTI意识到品质管理对于企业发展的重要性。于是,公司开始引进先进的品质管理体系,从原材料采购到生产流程控制,再到产品检测,每一个环节都严格把关。同时,CTI还加大了品牌宣传力度,通过参加行业展会、举办技术研讨会等方式,提升品牌知名度和影响力。这些举措不仅提高了产品的品质稳定性,也赢得了客户的信赖和支持。

DAESAN公司的发展小趣事

在电子行业中,环保问题一直备受关注。DAESAN公司深知自己的社会责任和担当,因此将环保理念融入企业的生产经营之中。他们采用环保材料和生产工艺,减少污染物排放;同时,他们还积极参与各种环保活动和公益事业,推动行业的可持续发展。DAESAN公司的环保举措赢得了社会的广泛赞誉和尊重。

请注意,以上故事均基于假设性的事实进行虚构,可能与DAESAN公司的实际情况存在出入。如需了解更多关于DAESAN公司在电子行业中的具体发展故事,请查阅相关新闻报道和官方资料。

Bytesonic Corporation公司的发展小趣事

为了进一步加强对大陆市场的投资和管控,Bytesonic Corporation在1998年5月在英属维尔京群岛成立了控股公司——剑桥电子有限公司。这一举措不仅提升了公司的资本运作能力,也为其在全球范围内的业务拓展提供了更多的便利。

Caddock公司的发展小趣事

Caddock公司的发展可以追溯到1962年,当时公司推出了Micronox电阻系统。这一创新技术使电阻器在极端操作条件和恶劣环境下实现了高水平的稳定性和可靠性。这一重大突破为Caddock公司赢得了市场的广泛认可,并为后续的电阻材料技术发展奠定了坚实的基础。

BRIGHT公司的发展小趣事

随着BRIGHT公司在国际市场上的不断拓展,其品牌和产品也引起了一定的争议。在一些国家和地区,BRIGHT公司的某些行为或言论引发了公众的不满和批评。然而,这并没有阻挡BRIGHT公司前进的步伐。他们坚持自己的发展策略,通过不断创新和改进产品,积极应对各种挑战和机遇。在国际市场上,BRIGHT公司逐渐树立起了自己的品牌形象,并为电子行业的发展做出了重要的贡献。

这些故事展示了BRIGHT公司在电子行业中的不同领域所取得的成就和发展。无论是无线耳机领域的开创者、太阳能领域的突破者,还是健康技术领域的创新者、酒店业务的拓展者,以及在国际市场上的拓展与争议,都体现了BRIGHT公司不断创新、追求卓越的精神。这些故事不仅反映了BRIGHT公司的发展历程,也展示了电子行业的多样性和活力。

问答坊 | AI 解惑

工程勾通,友好交流、扩大共识,相互借鉴

有归属、没宗派,有尊重、没辈分,有针对、没争竞,有奉献、没名利 相互尊重、友好交流、扩大共识,倡导不同文化间增进了解、相互借鉴 电子工程师,结构工程师,软件工程师,硬件工程师,FPGA研发。另有数码产品,影音视听产品,手机,微型硬盘播放机,R ...…

查看全部问答>

H-FLASHER查询不到Flash怎么回事啊。

我用的LPC2378,使用H-JTAG几乎都可以查询到芯片,再用H-FLASHER时大多数只能查到\"Target:ARM7TDMI-S Little-Endian\",而在\"Flash:ERROR\"。在H-FLASHER里选芯片选过LPC 2378和LPC2378_A都不好用。我的并口设置的是SPP模式。…

查看全部问答>

高性能低成本S3C2416微型ARM9嵌入式模块

◆ 全面替代S3C2440,且性价比更优 ◆ 模块背面无任何器件,方便直接贴焊或通过插针与底板相连 ◆ 商业级(0°~70°)、工业级(-40°~85°) ◆ 微尺寸(40x40x4mm)、低价格(千片价…

查看全部问答>

usb mass storage 问题

MARVELL PXA310+WM6.0(littleton的BSP)下添加usb mass storage 功能: 以便设备连接到PC上时,能使SD卡像U盘一样在“我的电脑”里呈现出一个盘符, 不通过ActiveSync而是通过usb直接访问。 现在注册表设置好了(99%没错),usbmsfn.dll也已经 ...…

查看全部问答>

pwm电路控制的直流电机

做了个PWM电路来控制直流电机,用C语言编译后,在keil中运行时有5个警告,不知错在何地方,请内行指点下,本人不胜感激!见原图: …

查看全部问答>

初学嵌入开发,请问看哪些书籍会比较合适

大家好,我是初学嵌入开发,请问看哪些书籍会比较合适。 谢谢。 …

查看全部问答>

紧急求救!!用c开发手机或PDA需要看什么方面的书籍资料!!谢谢各位拉

本人用vc写过应用程序,用c写过mp3的程式,但是c++不太好,在vc里面基本用的都是c,现在想转做手机或pda方面,请教需要看哪些书啊?我看些资料,一般都是在用WinCE或在Linux下开发,哪个发展更好些?不知道这方面薪水待遇怎么样?敢请各位不啬赐教 ...…

查看全部问答>

关于assert的错误

在有些时候,建好工程后调试会出现assert的错误,这个错误不知道是怎么回事,好象跟设置和程序都没关系.请问这个错误怎么处理的…

查看全部问答>

跪求MSP430的开发实例

小弟初来乍到,是MSP430的初学者,跪求适合初学者做的案例来作参考,请各位大神多多照顾 …

查看全部问答>

最菜鸟的msp430 1602 三位数自加程序

最菜鸟的msp430 1602 三位数自加程序 刚入门的菜鸟们请借鉴!!…

查看全部问答>