你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

TIM1中断

[复制链接]
zhanghjj 提问时间:2020-3-31 23:56 /
为什么我用TIM1定时10s后才产生中断,我初始值设的是0,但调试出来,开发板一上电就会首先产生一次中断呢,大神解答下



#include "iostm8s208mb.h"//主控芯片的头文件
/************************常用数据类型定义******************/
#define u8  uint8_t
#define u16 uint16_t
#define u32 uint32_t
typedef unsigned char    uint8_t;
typedef unsigned short   uint16_t;
typedef unsigned long    uint32_t;
/**********************端口/引脚定义区域*******************/
#define led1        PI_ODR_ODR0//PI0引脚输出方波信号
/*************************函数声明区域*********************/
void GPIO_init(void);//GPIO端口初始化配置函数声明
void delay(u16 Count);//延时函数声明
void TIM1_init();//TIM1初始化函数声明
/**************************主函数区域**********************/
int main(void)
{
  asm("sim");//改变主程序软件优先级“关闭中断”
  GPIO_init();//初始化相关GPIO引脚配置
  led1=1;
  TIM1_init();//TIM1相关功能配置初始化
  TIM1_CR1|=0x81;//使能计数器使得TIM1_CR1寄存器CEN位为“1”
  TIM1_SR1&=0xFE;//清除溢出中断标志位"UIF"
  asm("rim");//改变主程序软件优先级“开启中断”
  while(1)
  {

  }
}
/****************************************************************/
//GPIO端口初始化配置函数GPIO_init(),无形参,无返回值
/****************************************************************/
void GPIO_init(void)
{
  PI_DDR_DDR0=1;//配置PI0引脚为输出引脚
  PI_CR1_C10=1; //配置PI0引脚为推挽输出模式
  PI_CR2_C20=0; //配置PI0引脚为低斜率输出

}
/****************************************************************/
//TIM1功能初始化函数TIM1_init(),有3个形参x,y和set_num
//x和y用于配置分频系数,set_num表示计数值,无返回值
/****************************************************************/
void TIM1_init()
{
  TIM1_PSCRH=0x01;//配置分频系数高位
  TIM1_PSCRL=0X8F;//配置分频系数低位

  TIM1_ARRH=0xc3;
  TIM1_ARRL=0x50;//配置自动重装载寄存器高低位
  TIM1_CNTRH=0x0;
  TIM1_CNTRL=0x0;
   TIM1_IER=0x01;//开启溢出中断
}
/****************************************************************/
//TIM1计数溢出中断函数TIM1_UPD_OVF_TRG_BRK_IRQHandler()
/****************************************************************/
#pragma vector=0x0D
__interrupt void TIM1_UPD_OVF_TRG_BRK_IRQHandler(void)
{
  led1=!led1;//PB0引脚状态取反输出方波信号
  TIM1_SR1&=0xFE;//清除溢出中断标志位"UIF"
}

收藏 评论4 发布时间:2020-3-31 23:56

举报

4个回答
toofree 回答时间:2020-4-1 10:28:17
外设初始化时,在开中断前,要把对应的中断清一遍。
如果不清中断的话,状态不确定,有可能会出中断标志。
zhanghjj 回答时间:2020-4-1 18:00:39
toofree 发表于 2020-4-1 10:28
外设初始化时,在开中断前,要把对应的中断清一遍。
如果不清中断的话,状态不确定,有可能会出中断标志。 ...

在开中断时,清除标志位吗
billaj 回答时间:2020-4-7 16:34:37
沙发对,先清中断标志位
butterflyspring 回答时间:2020-4-13 11:09:48
建议配置定时器时最好加一句,软件使能更新事件。 目的是将配置值立刻加载到影子寄存器上去

所属标签

相似问题

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版