历史上的今天
返回首页

历史上的今天

今天是:2024年12月18日(星期三)

正在发生

2019年12月18日 | STM8L之定时器3的精确延时

2019-12-18 来源:eefocus

简介

本文介绍STM8L系列如何使用定时器3进行精确定时1S。

注:驱动外默认已启动16M晶振。


实验平台

编译软件:IAR for STM8 1.42.2

硬件平台:stm8l101f3p6开发板

仿真器:ST-LINK

库函数版本:STM8L_STMTouch_Lib_V1.1.0


实验步骤

1、工程中添加自己写的定时器3的驱动

1)写一个驱动GUA_Timer3.c (存放在工程的USER文件夹中)


//******************************************************************************                            

//name:             GUA_Timer3.c               

//introduce:        定时器3驱动        

//author:           甜甜的大香瓜                     

//email:            897503845@qq.com         

//QQ group          香瓜单片机之STM8/STM32(164311667)                      

//changetime:       2016.11.30      

//******************************************************************************    

#include "stm8l10x.h"  

#include "GUA_Timer3.h"  

  

/*********************内部变量************************/   

static u32 gGUA_Timer3_Delay; 

 

//******************************************************************************          

//name:             GUA_Timer3_Decrement          

//introduce:        定时器减1       

//parameter:        none         

//return:           none        

//author:           甜甜的大香瓜               

//email:            897503845@qq.com                  

//QQ group          香瓜单片机之STM8/STM32(164311667)                      

//changetime:       2016.11.30                        

//******************************************************************************    

void GUA_Timer3_Decrement(void)  

{  

  if(gGUA_Timer3_Delay != 0x00)  

  {   

    gGUA_Timer3_Delay--;  

  }  

}  

  

//******************************************************************************          

//name:             GUA_Timer3_Delay50Us          

//introduce:        定时器延时50微秒       

//parameter:        none         

//return:           none        

//author:           甜甜的大香瓜               

//email:            897503845@qq.com                  

//QQ group          香瓜单片机之STM8/STM32(164311667)                      

//changetime:       2016.11.30                        

//******************************************************************************    

void GUA_Timer3_Delay50Us(u32 nGUA_Time)  

{  

  gGUA_Timer3_Delay = nGUA_Time;  

  

  while(gGUA_Timer3_Delay != 0);  

}  

 

//******************************************************************************          

//name:             GUA_Timer3_Init          

//introduce:        定时器3初始化       

//parameter:        none         

//return:           none        

//author:           甜甜的大香瓜               

//email:            897503845@qq.com                  

//QQ group          香瓜单片机之STM8/STM32(164311667)                      

//changetime:       2016.11.30                        

//******************************************************************************    

void GUA_Timer3_Init(void)  

{  

  //时钟配置  

  CLK_PeripheralClockConfig(CLK_Peripheral_TIM3,ENABLE);    

  

  //1分频,向上计数,每50us定时中断一次   

  TIM3_DeInit();  

  TIM3_TimeBaseInit(TIM3_Prescaler_1, TIM3_CounterMode_Up, 16*50);       

  TIM3_ARRPreloadConfig(ENABLE);  

  TIM3_ITConfig(TIM3_IT_Update, ENABLE);  

  TIM3_Cmd(ENABLE);  

}  


2)写一个定时器驱动头文件GUA_Timer3.h(存放在工程的USER文件夹中)

//******************************************************************************                            

//name:             GUA_Timer3.h            

//introduce:        定时器3驱动的头文件        

//author:           甜甜的大香瓜                     

//email:            897503845@qq.com         

//QQ group          香瓜单片机之STM8/STM32(164311667)                      

//changetime:       2016.11.30      

//******************************************************************************   

#ifndef _GUA_TIMER3_H_  

#define _GUA_TIMER3_H_  

   

/*********************外部函数声明************************/   

void GUA_Timer3_Decrement(void);

void GUA_Timer3_Delay50Us(u32 nGUA_Time);  

void GUA_Timer3_Init(void);  

  

#endif  


3)工程中添加GUA_Timer3.c

4)添加定时器驱动的路径


$PROJ_DIR$..USER  

注意USER文件夹是与“Project”、“FWlib”文件夹同级的自定义文件,用于存放香瓜写的代码。


2、添加库的驱动


1)添加库的驱动文件

3、写中断服务函数(stm8l10x_it.c中)

1)添加头文件

#include "GUA_Timer3.h" 


2)修改定时器3中断服务函数

//******************************************************************************          

//name:             GUA_Timer3_Decrement          

//introduce:        定时器3的Update/Overflow/Trigger/Break中断服务函数,定时器减1       

//parameter:        none         

//return:           none        

//author:           甜甜的大香瓜               

//email:            897503845@qq.com                  

//QQ group          香瓜单片机之STM8/STM32(164311667)                      

//changetime:       2016.11.30                        

//****************************************************************************** 

INTERRUPT_HANDLER(TIM3_UPD_OVF_TRG_BRK_IRQHandler, 21)

{

  GUA_Timer3_Decrement();

  TIM3_ClearITPendingBit(TIM3_IT_Update);   

}

进一次中断减一次静态变量的数值。


4、应用层中调用


1)添加头文件(main.c中)


#include "GUA_Timer3.h"


2)初始化(main.c的main函数中)

  //定时器3的初始化

  GUA_Timer3_Init(); 


3)测试延时1S(main.c的main函数中)

  //延时1S  

  GUA_Timer3_Delay50Us(20000);  


五、实验结果

仿真,在“GUA_Timer3_Delay50Us”函数前后设置断点,可发现执行时长为1S。或者用示波器观察更为准确。


因此实验成功。

推荐阅读

史海拾趣

AB Connectors Ltd公司的发展小趣事

随着全球环保意识的不断提高,AB Connectors Ltd积极响应国家绿色发展的号召,将环保理念融入到企业的生产经营中。公司采用环保材料和生产工艺,减少了对环境的污染。同时,公司还加强了对废弃物的处理和回收利用,实现了资源的循环利用。这些举措不仅提升了公司的社会形象,还为公司的可持续发展奠定了坚实基础。

以上五个故事基于电子行业的一般发展情况和公司可能面临的挑战与机遇进行了虚构,旨在展示AB Connectors Ltd在发展过程中可能经历的重要阶段和取得的成就。请注意,这些故事并非基于真实事件,仅用于说明目的。

Ampire Co Ltd公司的发展小趣事

进入新世纪,电子行业的技术更新换代速度加快。AB Connectors Ltd意识到,只有不断创新才能在激烈的市场竞争中立足。于是,公司加大了研发投入,组建了一支高素质的研发团队,专注于连接器技术的创新。经过多年的努力,AB Connectors Ltd成功开发出了一系列具有自主知识产权的新型连接器产品,不仅提高了产品的性能和质量,还降低了生产成本。这些创新产品为公司赢得了众多客户的青睐,进一步巩固了市场地位。

EMI Filter Company公司的发展小趣事

Murata是一家历史悠久的电子元器件公司,他们早在电子设备发展的初期就认识到了EMI滤波器的重要性。随着电子产品的不断小型化,Murata看到了小型化EMI滤波器的巨大市场需求。他们通过与多家科研机构和高校合作,成功研发出了一系列高性能、小型化的EMI滤波器。这些滤波器不仅性能优越,而且体积小巧,非常适合用于现代电子设备中。Murata因此赢得了大量的市场份额,并成为了EMI滤波器领域的佼佼者。

Greenliant公司的发展小趣事

随着电动汽车市场的爆发式增长,GPS在2025年决定涉足电动汽车充电基础设施领域。公司推出了一系列快速、智能的电动汽车充电桩,支持多种充电标准和支付方式,满足了不同用户的需求。同时,GPS还开发了充电站管理软件,实现了充电桩的远程监控和运维管理,提高了充电服务的可靠性和便捷性。GPS的电动汽车充电基础设施解决方案在多个城市得到广泛应用,为电动汽车的普及提供了有力支持。

Celduc Relais公司的发展小趣事

随着公司实力的不断增强,Celduc Relais开始积极拓展国际市场。公司通过参加国际电子展会、建立海外销售渠道以及与当地合作伙伴建立战略合作关系等方式,逐步打开了欧洲、北美和亚洲等多个国家和地区的市场。这一过程中,公司不仅提升了品牌知名度,也积累了丰富的国际业务经验。

FCT electronic公司的发展小趣事

在电子行业的初期,FCT electronic公司由一群富有远见和激情的工程师创立。他们看到了挠性电路板在未来电子产品中的巨大潜力,并致力于研发出更高效、更可靠的挠性电路板解决方案。经过数年的不懈努力,FCT electronic公司终于研发出了具有革命性意义的挠性电路板技术,这一技术为公司在行业中树立了良好的口碑,也为公司的后续发展奠定了坚实的基础。

问答坊 | AI 解惑

主流pdf文档搜索引擎评测对比

主流pdf文档搜索引擎评测对比 PDF全称Portable Document Format,译为可移植文档格式,是一种跨平台的电子文件格式。 这一特点使它成为在Internet上进行电子文档发行和数字化信息传播的理想文档格式。越来 越多的电子图书、产品说明、公司文告、 ...…

查看全部问答>

请教高手下图贴片元件名称

跟 BAV99/J3 长的一样,上边写着42 K  大小是约是1.5*2.5mm,接在CS5532的AIN1+ 请高手指点~~~ 谢谢 [ 本帖最后由 simonprince 于 2009-10-16 10:23 编辑 ]…

查看全部问答>

1.5V电池驱动蜂鸣片,如何改进电路让声音更大?

通过一个2sc2158在drain极串一个33mH的电感到电池(2.6V),source极直接到地,gate极通过560欧姆电阻输入1.4KHz&1.6KHz的方波信号(可调)。蜂鸣片并在电感两端。 现在装好的蜂鸣片可以达到67dB的响度。但是要达到75dB好像很难。我们通过外加电压 ...…

查看全部问答>

废旧电子节能灯的再利用

一、前言 电子节能灯的广泛应用给以往的高能耗照明带来了一场深刻的绿色革命。随着应用范围的不断扩大,大量的废旧节能灯也被置换下来形成了有害的电子垃圾.对社会环境造成了一定的负面影响。但是从节约的角度出发,一方面有许多用料和工艺都较好 ...…

查看全部问答>

昨天,我看我们新来的领导

做技术的一个领导,手都是白白嫩嫩的…

查看全部问答>

evc 4.0 中文模拟器

evc 4.0 的模拟器是英文的,不支持中文,如何让它支持中文呢? …

查看全部问答>

如何在wince下虚拟一个串口

小弟第一次接触这方面东西,没有什么思路。当然有源码更好,或者哪位提供一下思路,或者参考例子,万分感谢~…

查看全部问答>

今天是我在坛子注册一周年纪念,明天去公司报到了,希望一切顺利!

好久没有来坛子发帖子了。今天是一周年纪念,我该来发一贴,纪念一下。   明天早晨,去公司报到,一直都在期待这么一天,但依然有那么一些隐忧,公司上一届去的那些人的群里,了解到的一些情况,不太乐观, 所以我想我去了,会有太多的意想 ...…

查看全部问答>

OLED显示器的DC生产测试中显示器的测试结果

为了说明实现这一测试方案所达到的结果,我们用四个源表的测试系统对一个48×64的OLED显示器进行了正向电流、电阻和反向偏置的测量。测量速度被设定为1个NPLC(即,积分时间 = 16.7毫秒),并有1秒的信号源延迟。该延迟可以保证在测试开始前信号 ...…

查看全部问答>