本篇博文最后修改时间:2016年11月15日,03:03。
一、简介
本文介绍STM8L系列如何使用timer2产生定时中断。
二、实验平台
编译软件:IAR for STM8 1.42.2
硬件平台:stm8l101f3p6开发板
仿真器:ST-LINK
库函数版本:STM8L_STMTouch_Lib_V1.1.0
三、版权声明
博主:甜甜的大香瓜
声明:喝水不忘挖井人,转载请注明出处。
原文地址:http://blog.csdn.NET/feilusia
联系方式:897503845@qq.com
香瓜BLE之CC2541群:127442605
香瓜BLE之CC2640群:557278427
香瓜单片机之STM8/STM32群:164311667
甜甜的大香瓜的小店(淘宝店):https://shop217632629.taobao.com/?spm=2013.1.1000126.d21.hd2o8i
四、实验步骤
1、工程中添加自己写的定时器2的驱动
1)写一个驱动GUA_Timer2.c (存放在工程的USER文件夹中)
//******************************************************************************
//name: GUA_Timer2.c
//introduce: 定时器2驱动
//author: 甜甜的大香瓜
//email: 897503845@qq.com
//QQ group 香瓜单片机之STM8/STM32(164311667)
//changetime: 2016.11.15
//******************************************************************************
#include "stm8l10x.h"
#include "GUA_Timer2.h"
//******************************************************************************
//name: GUA_Timer2_Init
//introduce: 定时器2初始化
//parameter: none
//return: none
//author: 甜甜的大香瓜
//email: 897503845@qq.com
//QQ group 香瓜单片机之STM8/STM32(164311667)
//changetime: 2016.11.15
//******************************************************************************
void GUA_Timer2_Init(void)
{
//时钟配置
CLK_PeripheralClockConfig(CLK_Peripheral_TIM2,ENABLE);
//1分频,向上计数,每13us定时中断一次
TIM2_DeInit();
TIM2_TimeBaseInit(TIM2_Prescaler_1, TIM2_CounterMode_Up, 16*13);
TIM2_ARRPreloadConfig(ENABLE);
TIM2_ITConfig(TIM2_IT_Update , ENABLE);
TIM2_Cmd(ENABLE);
}
//******************************************************************************
//name: GUA_Timer2.h
//introduce: 定时器2驱动的头文件
//author: 甜甜的大香瓜
//email: 897503845@qq.com
//QQ group 香瓜单片机之STM8/STM32(164311667)
//changetime: 2016.11.15
//******************************************************************************
#ifndef _GUA_TIMER2_H_
#define _GUA_TIMER2_H_
/*********************外部函数声明************************/
void GUA_Timer2_Init(void);
#endif
3)工程中添加GUA_Timer2.c
4)添加驱动的路径
$PROJ_DIR$\..\USER
注意USER文件夹是与“Project”等文件夹同级的自定义文件,用于存放香瓜写的代码。
2、添加库的驱动
1)添加库的驱动文件
3、写中断服务函数(stm8l10x_it.c中)
1)添加头文件
#include "GUA_Timer2.h"
2)修改定时器2中断服务函数
INTERRUPT_HANDLER(TIM2_UPD_OVF_TRG_BRK_IRQHandler, 19)
{
TIM2_ClearITPendingBit(TIM2_IT_Update);
}
暂时没有写任何处理,可自行添加。
4、应用层中调用
1)添加头文件(main.c中)
#include "GUA_Timer2.h"
2)初始化(main.c的main函数中)
//定时器2初始化
GUA_Timer2_Init();
五、实验结果
设置断点在定时器2的中断服务函数中,仿真并全速运行,会不断地进入中断。具体时间香瓜没有测试,先这样。
因此,实验成功。