)
一、TIM常见函数1055初始化时基单元1063时基单元赋予默认值1056-1059配置输出比较单元1064给OC赋予一个默认值1067开启定时器1069CNT溢出的时候允许update触发1073选择内部时钟1074选择ITRx其他定时器1075选择TIX捕获通道时钟1077选择外部模式11079选择外部模式21081配置ETR极性1083修改预分频值psc1084改变计数器模式1085选择触发源1092自动重装器预装功能1096-1099影子寄存器1100-1103配置快速使能1108-1114设置极性1115-1116修改输出使能1117修改输出比较模式·1125给计数器写一个值1126给自动重装器写一个值arr1127-1130修改CCR值1140选择当前计数器的值1041选择当前预分配器值1143当发生溢出后消除update标志位二、时基单元时钟发送频率为F的信号到达预分频器分频后计数时钟频率为F/(PSC1)每经过(PSC1)/F秒 CNT 完成一次计数CNT 累计计数(ARR1)次完成一轮计数溢出通用定时器一轮溢出直接产生一次 Update高级定时器需要连续完成(RCR1)轮 CNT 溢出才会产生一次 Update 事件。TIM_TimeBaseInitStructure.TIM_ClockDivision//配置时钟分频TIM_TimeBaseInitStructure.TIM_CounterMode//计数器模式TIM_TimeBaseInitStructure.TIM_Period//arr自动重装器的值TIM_TimeBaseInitStructure.TIM_Prescaler//psc预分频器的值TIM_TimeBaseInitStructure.TIM_RepetitionCounter0;//重复计数器只有高级定时器才有定时器中断详细步骤1.RCC开启时钟内部时钟2.选择时钟模式3.配置时集单元4.使能中断输出控制5.配置NVIC6.启动定时器只要使用到TIM就必须开启定时器void Timer_Init(void){/*开启RCC*/RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);/*选择时钟模式*/TIM_InternalClockConfig(TIM2);//内部TIM_ETRClockMode2Config(TIM2,TIM_ExtTRGPSC_OFF,TIM_ExtTRGPolarity_Inverted,0x00);//外部/*配置时集单元*/TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;TIM_TimeBaseInitStructure.TIM_ClockDivisionTIM_CKD_DIV1;TIM_TimeBaseInitStructure.TIM_CounterModeTIM_CounterMode_Up;TIM_TimeBaseInitStructure.TIM_Period10000-1;TIM_TimeBaseInitStructure.TIM_Prescaler7200-1;TIM_TimeBaseInitStructure.TIM_RepetitionCounter0;TIM_TimeBaseInit(TIM2,TIM_TimeBaseInitStructure);/*使能中断输出控制*/TIM_ClearFlag(TIM2,TIM_FLAG_Update);//当发生溢出后消除update标志位TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);//CNT溢出的时候允许中断触发/*配置NVIC*/NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);NVIC_InitTypeDef NVIC_InitStructure;NVIC_InitStructure.NVIC_IRQChannelTIM2_IRQn;NVIC_InitStructure.NVIC_IRQChannelCmdENABLE;NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority2;NVIC_InitStructure.NVIC_IRQChannelSubPriority1;NVIC_Init(NVIC_InitStructure);/*开启TIM*/TIM_Cmd(TIM2,ENABLE)}CNT 计数至 ARR 值后发生溢出生成 Update 更新事件触发中断void TIM2_IRQHandler(void){if (TIM_GetITStatus(TIM2,TIM_IT_Update)SET){Num;TIM_ClearITPendingBit(TIM2,TIM_IT_Update);}}三、输出捕获模式选择PWM1PWM2常用TIM_OCInitTypeDef TIM_OCInitStructure;TIM_OCStructInit(TIM_OCInitStructure);//下面赋予的变量都是对于基础定时器的但是当使用高级定时器的时候会出现错误因此对初级定时器没有而高级定时器有的变量赋予一个初始值TIM_OCInitStructure.TIM_OCMode//模式选择TIM_OCInitStructure.TIM_OCPolarity//极性选择Hight为不反转low为反转TIM_OCInitStructure.TIM_OutputState//输出使能TIM_OCInitStructure.TIM_Pulse//设置CCR值PWM频率F/(PSC1)/(ARR1)PWM占空比CCR/(ARR1)PWM分辨率1/(ARR1)四、输入捕获/*输入捕获*/TIM_ICInitStructure.TIM_Channel//选择通道TIM_ICInitStructure.TIM_ICFilter//选择滤波器TIM_ICInitStructure.TIM_ICPolarity//选择极性TIM_ICInitStructure.TIM_ICPrescaler//选择分频器TIM_ICInitStructure.TIM_ICSelection//选择交叉输入和直接输入图上黄色梯形/*选择触发源*/TIM_SelectInputTrigger(TIM3,TIM_TS_TI1FP1);/*配置从模式*/TIM_SelectSlaveMode(TIM3,TIM_SlaveMode_Reset);主模式发送信号控制其他从模式接受信号产生功能、