zhanghjj 发表于 2020-3-31 23:56:05

TIM1中断

为什么我用TIM1定时10s后才产生中断,我初始值设的是0,但调试出来,开发板一上电就会首先产生一次中断呢,大神解答下



#include "iostm8s208mb.h"//主控芯片的头文件
/************************常用数据类型定义******************/
#define u8uint8_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"
}

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

建议配置定时器时最好加一句,软件使能更新事件。 目的是将配置值立刻加载到影子寄存器上去
页: [1]
查看完整版本: TIM1中断