定时器1的配置程序, 功能如下: 通过通道1 TIM_TS_TI1FP1 形成外部触发, 同时作为主定时器
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_ICInitTypeDef TIM_ICInitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);
TIM_ICStructInit(& TIM_ICInitStructure); //缺省设置
//重新将Timer设置为缺省值
TIM_DeInit(TIM1);
//采用内部时钟给TIM2提供时钟源
//TIM_InternalClockConfig(TIM2);
//预分频系数为36000-1,这样计数器时钟为72MHz/36000 = 2KHz 0.5ms
TIM_TimeBaseStructure.TIM_Prescaler = 1-1;
//设置时钟分割
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;
//设置计数器模式为向上计数模式
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; // TIM_CounterMode_Down
//设置计数溢出大小,每计2个数就产生一个更新事件
TIM_TimeBaseStructure.TIM_Period = 65536-1; // 10*0.5=5ms
//重复计数,就是重复溢出多少次才给你来一个溢出中断
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
//将配置应用到TIM2中
TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);
TIM_ICStructInit(&TIM_ICInitStructure); //默认初始化结构体
TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;
TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;
TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;
TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;
TIM_ICInitStructure.TIM_ICFilter = 0x0;
TIM_ICInit(TIM1, &TIM_ICInitStructure);
TIM_SelectInputTrigger(TIM1, TIM_TS_TI1FP1); //选择触发引脚
TIM_SelectOutputTrigger(TIM1, TIM_TRGOSource_Update); //选择输出模式 主模式选择 这是级联的关键
TIM_SelectSlaveMode(TIM1, TIM_SlaveMode_Trigger); //从模式设置 触发模式
TIM_SelectMasterSlaveMode(TIM1, TIM_MasterSlaveMode_Enable); //启动定时器的主从模式
以下是TIM2的配置, 主要就是配置成外部时钟模式,选择输入信号
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);// //重新将Timer设置为缺省值
TIM_SelectSlaveMode(TIM2, TIM_SlaveMode_External1); //外部时钟模式 外部时钟模式1 – 选中的触发输入(TRGI)的上升沿驱动计数器
TIM_SelectInputTrigger(TIM2, TIM_TS_ITR0); //定时器1 的Trigger 0做为触发输入
这样就可以了
以上是花了两天时间做出来的, 在网上没有找到同样的例子, 在此发表. 有问题的请留言
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
还没用过
这个是定时器级联 组成32位定时器
一周热门 更多>