TIMER2定时器不能进入中断的问题

2021-02-23来源: eefocus关键字:TIMER2  定时器  中断

STM8S103的引脚封装图如下

是一个20管脚的51类型单片机,8Kflash 1kRAM。


STM8S207引脚封装如下

一个48引脚64KFLASH和6K的RAM,也是51单片机,但串口和定时器的功能多了。


从手册看,timer1是ADVANCED 定时器,timer 2 3是通用型定时器。


在移植过程中以为只要改动器件类型同时在stm8s.h内将


#ifndef __STM8S_H


#define __STM8S_H


#define STM8S207 //STM8S103


103注释掉并开通207的宏定义。


定时器初始化如下


void TIM1_Init(void)


{


TIM1_DeInit(); //定时器1相关寄存器复位


TIM1_TimeBaseInit(7, TIM1_COUNTERMODE_UP, 9999, 0); //中断时间10ms


// TIM1_TimeBaseInit(8, TIM1_COUNTERMODE_UP, 1500, 0); //中断时间ms


TIM1_ITConfig(TIM1_IT_UPDATE, ENABLE); //使能中断


TIM1_Cmd(ENABLE); //使能TIM1


}


void TIM2_Init(void)


{


TIM2_DeInit();


TIM2_TimeBaseInit(TIM2_PRESCALER_1, 125*20);//20ms中断


TIM2_ITConfig(TIM2_IT_UPDATE, ENABLE); //使能中断


ITC_SetSoftwarePriority(ITC_IRQ_TIM2_OVF, ITC_PRIORITYLEVEL_2);//设置d定时器中断优先级 2


TIM2_Cmd(ENABLE);//使能定时器1


}


但是通过单步调试,确无法进入中断


#pragma vector=ITC_IRQ_TIM2_OVF + 2


__interrupt void TIM2_UPD_OVF_BRK_IRQHandler(void)


{


TIM2_ClearFlag(TIM2_FLAG_UPDATE); //清定时器1更新中断标志


}


观察寄存器发现 TIMER2 的寄存器值TIMER2_IER无法开通中断也就是使能中断 ,手册和register都显示timer2 的寄存器很少。TIMER1和TIMER2的比较如下



后来在stm8s_timer2.h里发现了端倪


typedef struct TIM2_struct


{


__IO uint8_t CR1;


// __IO uint8_t RESERVE1;


// __IO uint8_t RESERVE2; //注释掉用于STM8S207 否则用于stm8s103


__IO uint8_t IER;


__IO uint8_t SR1;


__IO uint8_t SR2;


__IO uint8_t EGR;


__IO uint8_t CCMR1;


__IO uint8_t CCMR2;


__IO uint8_t CCMR3;


__IO uint8_t CCER1;


__IO uint8_t CCER2;


__IO uint8_t CNTRH;


__IO uint8_t CNTRL;


__IO uint8_t PSCR;


__IO uint8_t ARRH;


__IO uint8_t ARRL;


__IO uint8_t CCR1H;


__IO uint8_t CCR1L;


__IO uint8_t CCR2H;


__IO uint8_t CCR2L;


__IO uint8_t CCR3H;


__IO uint8_t CCR3L;


}


TIM2_TypeDef;


也就是在给timer2 的寄存器赋值时由于多了两个没用的,将数值顶替了,注释掉可以了。

关键字:TIMER2  定时器  中断 编辑:什么鱼 引用地址:http://news.eeworld.com.cn/mcu/ic527134.html

上一篇:STM8s 定时器2使用
下一篇:STM8L TAB段式LCD液晶驱动程序

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

52单片机的timer2时钟输出500KHz频率的源程序
STC89C52RC可以用P1.0输出500KHz的频率,此处为本人自己写的源码和整个工程,望能助有缘人一臂之力!单片机源程序如下:#include<reg52.h>sfr T2MOD=0xc9;sbit clk_out=P1^0; //时钟输出端void t2_clock(void){C_T2=0; //定时器模式T2MOD=0x02; //T2OE=1,定时器2允许输出RCAP2L=0Xfa; //赋T2的预置值0xfffa,输出频率500KRCAP2H=0Xff;TR2=1;}void main(void){t2_clock();while(1);}
发表于 2020-12-01
STM32F103之Timer2PWM输出
一、简介本文以STM32F103编程为例,介绍STM32F103Timer2 PWM输出。二、实验平台电脑平台:Windows7 64位旗舰编译软件:IAR硬件平台:STM32F103CB三、版权声明四、实验前提1、在进行本文步骤前,请先安装IAR Embedded Workbench 5.4版本;准备好STM32F103CB硬件平台。五、基础知识暂无六、源码地址暂无七、关联文章暂无八、实验内容1.初始化Timer2,初始化时需先开起相关时钟void Hal_Init_Pwm(uint16 period,uint16 Prescaler){    RCC_APB1PeriphClockCmd(RCC
发表于 2020-02-10
解决stm8s003中timer2配置初始化中引起中断更新
概述本文简要记述关于stm8s003中初始化timer2立即进入中断的解决方法:在调试stm8 tim2作为100ms定时器的时候发现,在enable timer2后,不久远远小于100ms大概800us左右就会立即进入中断(更新事件触发),无论是怎样设置先后顺序,以及在enable中断之前清除中断状态位都无法解决进入中断的问题。此处澄清真的不是st的bug,不过这种设计不是我等小白能够领悟到的,哈哈!搜索在度娘中搜索到的结果一般解决方法都是等待第一次触发后清除事件再打开中断。出于对知(领)识(导)的好(压)奇(迫),便寻找解决方法,最终找到了问题的根源(google大法好:https://community.st.com/s
发表于 2020-02-09
【STM8L】STM8L之timer2产生PWM
一、简介本文介绍STM8L系列如何使用timer2产生38K频率的PWM。其中,本文使用的是timer2的第1通道(PB0)。二、实验平台编译软件:IAR for STM8 1.42.2硬件平台:stm8l101f3p6开发板仿真器:ST-LINK库函数版本:STM8L_STMTouch_Lib_V1.1.0三、版权声明四、实验步骤1、工程中添加自己写的定时器2的驱动1)写一个驱动GUA_Timer2_PWM.c (存放在工程的USER文件夹中)//******************************************************************************   
发表于 2020-01-30
【STM8L】STM8L之<font color='red'>timer2</font>产生PWM
STM32之timer2的精准延时
一、简介本文介绍STM32系列如何使用timer2进行精确定时。二、实验平台库版本:STM32F10x_StdPeriph_Lib_V3.5.0编译软件:MDK4.53硬件平台:STM32开发板(主芯片stm32f103c8t6)仿真器:JLINK三、版权声明四、实验前提1、在进行本文步骤前,请先阅读以下博文:暂无2、在进行本文步骤前,请先实现以下博文:暂无五、基础知识暂无六、实验步骤1、编写并添加定时器2驱动1)编写驱动GUA_Timer2.c(存放在“……HARDWARE
发表于 2020-01-28
STM32之<font color='red'>timer2</font>的精准延时
对8051两个定时器(timer0和timer1)的使用解析
1.如何使用8051单片机内部的定时器timer0?#include<STC89C5xRC.h>void delay(int n){    int i;    TMOD=0x01;//16bits      for(i=0;i<n;i++)      {          TH0=0x3C;            TL0=0xB0;         
发表于 2021-08-04
小广播
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2021 EEWORLD.com.cn, Inc. All rights reserved