请教各位!我在用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上的。

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
4条回答
xiaobakang
1楼-- · 2019-10-15 02:05
正点原子 发表于 2017-2-22 23:03
系统主时钟呢?多少M?

我查看了一下启动函数里面,是因为把系统的时钟的初始化函数屏蔽。我看到您在旁边注释的文字了。我把注释去掉就可以了。
正点原子
2楼-- · 2019-10-15 03:03
 精彩回答 2  元偷偷看……
xiaobakang
3楼-- · 2019-10-15 06:16
您好,原子哥。系统主频也是8M。我又修改了一下,系统主频又变成108M了
xiaobakang
4楼-- · 2019-10-15 10:00
正点原子 发表于 2017-2-22 23:03
系统主时钟呢?多少M?

主频也是8M,我又换了一个工程模板,修改了下,系统主频又变成108M了,f103最高不是72M吗,怎么会变成108M

一周热门 更多>