中级会员
 
- 积分
- 494
- 金钱
- 494
- 注册时间
- 2013-1-29
- 在线时间
- 1 小时
|
我写了一个定时器中断 用库函数 但是当定时器初始化的时候,程序会进入一次中断,然后又用寄存器写了一个,发现寄存器版本的不存在这个现象
现在将代码贴在这
寄存器初始化部分 这个正常
RCC->APB1ENR|=0X01; //使能时钟
TIM2-> SC=7199; //分频7200
TIM2->ARR=200; //自动重装200
TIM2->CNT=0x00; //计数初值0
TIM2->DIER=0x01; //允许中断
TIM2->CR1=0x81; //允许计数
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
库函数初始化部分:
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
NVIC_InitTypeDef NVIC_InitStructure;
TIM_DeInit(TIM2);
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
TIM_TimeBaseStructure.TIM_Period =200 ;
TIM_TimeBaseStructure.TIM_Prescaler =(7200-1); //每20ms进入一次中断
TIM_TimeBaseStructure.TIM_ClockDivision = 0x0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2,& TIM_TimeBaseStructure);
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQChannel;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
TIM_ITConfig(TIM2,TIM_IT_Update, ENABLE);
TIM_Cmd(TIM2, ENABLE);
库函数部分出现问题 当程序执行完TIM_ITConfig(TIM2,TIM_IT_Update, ENABLE); 就会进入一次中断
另外 我用原子哥的战舰历程也测试了 用的是试验8 定时器中断 测试了寄存器和库函数两个版本 也存在我说的这种情况
请高手解释下 为什么用库函数写的时候 初始化代码部分就会进入一次中断?? |
|