请教各位!我在用f103c8t6的定时器定时时,为什么定时器初始化后的时钟只有8MHz,程序是我在原子哥的板子上调好后,移植过来的。

2019-10-15 00:30发布


void TIM4_Init(void){           //GPIO_InitTypeDefGPIO_InitStructure;         TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;       //TIM_OCInitTypeDef TIM_OCInitStructure;         NVIC_InitTypeDefNVIC_InitStructure;
         RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);    //使能定时器3时钟        //RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);  //使能GPIO外设和AFIO复用功能模块时钟
         //GPIO_PinRemapConfig(GPIO_PartialRemap_TIM3,ENABLE); //Timer3部分重映射  TIM3_CH2->PB5   
       //设置该引脚为复用输出功能,输出TIM3 CH2PWM脉冲波形    GPIOA.7//      GPIO_InitStructure.GPIO_Pin= GPIO_Pin_7; //TIM_CH2//      GPIO_InitStructure.GPIO_Mode= GPIO_Mode_AF_PP;  //复用推挽输出//      GPIO_InitStructure.GPIO_Speed= GPIO_Speed_50MHz;//      GPIO_Init(GPIOA,&GPIO_InitStructure);//初始化GPIO
       //初始化TIM3         TIM_DeInit(TIM4);         TIM_TimeBaseStructure.TIM_Period= 49999; //设置在下一个更新()事件装入活动的自动重装载寄存器周期的值         TIM_TimeBaseStructure.TIM_Prescaler=7199; //设置用来作为TIMx时钟频率除数的预分频值         TIM_TimeBaseStructure.TIM_ClockDivision= TIM_CKD_DIV1; //设置时钟分割:TDTS = Tck_tim         TIM_TimeBaseStructure.TIM_CounterMode= TIM_CounterMode_Up;  //TIM向上计数模式         TIM_TimeBaseInit(TIM4,&TIM_TimeBaseStructure); //根据TIM_TimeBaseInitStruct中指定的参数初始化TIMx的时间基数单位
         TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE);         //中断分组初始化         NVIC_InitStructure.NVIC_IRQChannel= TIM4_IRQn;  //TIM2中断         NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3;  //先占优先级2         NVIC_InitStructure.NVIC_IRQChannelSubPriority= 0;  //从优先级0         NVIC_InitStructure.NVIC_IRQChannelCmd= ENABLE; //IRQ通道被使能         NVIC_Init(&NVIC_InitStructure);  //根据NVIC_InitStruct中指定的参数初始化外设NVIC寄存器  

         TIM_Cmd(TIM4,ENABLE);  //使能TIM4
         //TIM_SetCompare2(TIM3,psc);//设置占空比        //TIM3->CCR2=psc;   }
void TIM4_IRQHandler(void){   static u8 n_time=0;   if(TIM_GetITStatus(TIM4, TIM_IT_Update) != RESET)   {              n_time++;           if(n_time>1)           {            LED0=0;  //点亮LED0              Power_Delay_5s=1;              n_time=0;              TIM_Cmd(TIM4, DISABLE);           }
    }
   TIM_ClearITPendingBit(TIM4,TIM_IT_Update); }


重点是,仿真时,timer4的时钟只有8M,程序是我在f103ZET8上调试好,移植到f103c8t6上的。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。