历史上的今天
今天是: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。或者用示波器观察更为准确。
因此实验成功。
上一篇:STM8L之内部16M晶振
下一篇:STM8S之电量采集
史海拾趣
|
主流pdf文档搜索引擎评测对比 PDF全称Portable Document Format,译为可移植文档格式,是一种跨平台的电子文件格式。 这一特点使它成为在Internet上进行电子文档发行和数字化信息传播的理想文档格式。越来 越多的电子图书、产品说明、公司文告、 ...… 查看全部问答> |
|
跟 BAV99/J3 长的一样,上边写着42 K 大小是约是1.5*2.5mm,接在CS5532的AIN1+ 请高手指点~~~ 谢谢 [ 本帖最后由 simonprince 于 2009-10-16 10:23 编辑 ]… 查看全部问答> |
|
通过一个2sc2158在drain极串一个33mH的电感到电池(2.6V),source极直接到地,gate极通过560欧姆电阻输入1.4KHz&1.6KHz的方波信号(可调)。蜂鸣片并在电感两端。 现在装好的蜂鸣片可以达到67dB的响度。但是要达到75dB好像很难。我们通过外加电压 ...… 查看全部问答> |
|
一、前言 电子节能灯的广泛应用给以往的高能耗照明带来了一场深刻的绿色革命。随着应用范围的不断扩大,大量的废旧节能灯也被置换下来形成了有害的电子垃圾.对社会环境造成了一定的负面影响。但是从节约的角度出发,一方面有许多用料和工艺都较好 ...… 查看全部问答> |
|
今天是我在坛子注册一周年纪念,明天去公司报到了,希望一切顺利! 好久没有来坛子发帖子了。今天是一周年纪念,我该来发一贴,纪念一下。 明天早晨,去公司报到,一直都在期待这么一天,但依然有那么一些隐忧,公司上一届去的那些人的群里,了解到的一些情况,不太乐观, 所以我想我去了,会有太多的意想 ...… 查看全部问答> |
|
为了说明实现这一测试方案所达到的结果,我们用四个源表的测试系统对一个48×64的OLED显示器进行了正向电流、电阻和反向偏置的测量。测量速度被设定为1个NPLC(即,积分时间 = 16.7毫秒),并有1秒的信号源延迟。该延迟可以保证在测试开始前信号 ...… 查看全部问答> |




