库程序代码:
void TIM_Configuration(void)
{
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
TIM_DeInit(TIM2);
TIM_TimeBaseStructure.TIM_Period=5000;
TIM_TimeBaseStructure.TIM_Prescaler=0;
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);
TIM_PrescalerConfig(TIM2,359,TIM_PSCReloadMode_Immediate);//时钟频率为72MHz/(359+1)=200000
TIM_ARRPreloadConfig(TIM2, DISABLE);
TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
TIM_Cmd(TIM2, DISABLE);
}
改成寄存器部分我是这样子编写的:
void TIM2_Init(void)
{
RCC->APB1ENR|=1<<0;
TIM2->ARR=5000;
TIM2-> SC=359;
TIM2->CR1|=0x0001;////使能定时器2,该寄存器第5位为DIR 0为向上计数模式 1为向下计数模式
TIM2->DIER|=1<<0;
TIM2->DIER|=1<<6;
TIM2->EGR=0x0001;
TIM2->CR1|=0x0080;
TIM2->DIER|=0x0001;
TIM2->CR1&=~(0x0001);
MY_NVIC_Init(1,3,TIM2_IRQChannel,2);//抢占1,子优先级3,组2
}
但程序运行的结果不一样 应该是哪里写错了。 |