为什么我用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"
}
收藏 |