您的位置 首页 基础

STM8_TIM4 溢出中止

C语言:Codee#11307/*+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++实验平台

C言语:Codee#11307

/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+ 试验渠道: ST 官方三合一套件
+ 硬件 : STM8S105S6T6C
+ 开发渠道: IAR For STM8 1.10
+ 仿真器 : ST-Link
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/

#include “stm8s.h”
unsignedintCOUNTER;
/*******************************************************************************
* ==时钟初始化函数==
* CLK_DeInit(); –> 复位时钟寄存器
* CLK_HSICmd(ENABLE); –> 使能内部高速时钟
* CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV2); –> 装备内部高速时钟(时钟分频器:2分频)
* CLK_ClockSecuritySystemEnable(); –> 敞开时钟安全体系
*******************************************************************************/
voidCLK_INIT(void)
{
CLK_DeInit();
CLK_HSICmd(ENABLE);
CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV2);
CLK_ClockSecuritySystemEnable();
}
/*******************************************************************************
* ==I/O口初始化函数==
* GPIO_DeInit(); –> 复位I/O端口 D
* GPIO_Init(GPIOD , GPIO_PIN_0 , GPIO_MODE_OUT_PP_LOW_SLOW);
–> 使能PORTD_0 设置为 输出,推挽式 ,低电平 ,低速率
*******************************************************************************/
voidGPIO_INIT(void)
{
GPIO_DeInit(GPIOD);
GPIO_Init(GPIOD,GPIO_PIN_0,GPIO_MODE_OUT_PP_LOW_SLOW);
}
/*******************************************************************************
* ==定时器4初始化函数==
* TIM4_DeInit(); –> 复位定时器4寄存器
* TIM4_TimeBaseInit(TIM4_PRESCALER_64,0x02 ); –> 128分频 , 赋计数器初值
* TIM4_ITConfig(TIM4_IT_UPDATE, ENABLE); –> 中止装备 ,更新中止使能 即溢出中止
* TIM4_Cmd(ENABLE); –> 定时器4使能
*******************************************************************************/
voidTIMER4_INIT(void)
{
TIM4_DeInit();
TIM4_TimeBaseInit(TIM4_PRESCALER_128,0x02);
TIM4_ITConfig(TIM4_IT_UPDATE,ENABLE);
TIM4_Cmd(ENABLE);

}
/*******************************************************************************
* ==MAIN 函数==
* 初始化 时钟
* 初始化 端口
* 初始化 定时器4
* 使能大局中止
*******************************************************************************/
voidmain(void)
{
CLK_INIT();
GPIO_INIT();
TIMER4_INIT();
COUNTER=0;
enableInterrupts();
while(1);
}
/*******************************************************************************
* ==中止服务函数==
* 翻转LED电平
* 铲除定时器更新标志位
*******************************************************************************/
#pragma vector=0x19
__interruptvoidTIM4_UPD_OVF_IRQHandler(void)
{
if(COUNTER<10000)
{
++COUNTER;
}
else
{
GPIO_WriteReverse(GPIOD,GPIO_PIN_0);
COUNTER=0;
}

TIM4_ClearITPendingBit(TIM4_IT_UPDATE);
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/zhishi/jichu/252187.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部