STM32f107定时器应用文档格式.docx
《STM32f107定时器应用文档格式.docx》由会员分享,可在线阅读,更多相关《STM32f107定时器应用文档格式.docx(13页珍藏版)》请在冰豆网上搜索。
main.h"
inttime1_NUM;
/*************************************************
函数:
voidTimer1_Configuration(void)
功能:
TIM1配置
参数:
无
返回:
定时计算:
(1/(72/(36-1+1)))*2000us=1000us=1ms
**************************************************/
voidTimer1_Configuration(void)
{
TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TIM1,ENABLE);
//打开TIM1定时器的时钟
TIM_DeInit(TIM1);
//TIMx寄存器重设为缺省值
TIM_TimeBaseStructure.TIM_Period=200;
//自动重装载寄存器周期的值
TIM_TimeBaseStructure.TIM_Prescaler=36-1;
//TIMx时钟频率除数的预分频值
TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;
//采样分频
TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;
//向上计数模式
TIM_TimeBaseInit(TIM1,&
TIM_TimeBaseStructure);
//清中断,以免一启用中断后立即产生中断
TIM_ClearFlag(TIM1,TIM_FLAG_Update);
TIM_ARRPreloadConfig(TIM1,ENABLE);
//允许自动重装载寄存器(ARR)
TIM_ITConfig(TIM1,TIM_IT_Update,ENABLE);
//允许TIM1溢出中断
TIM_Cmd(TIM1,ENABLE);
//TIM1开启时钟
time1_NUM=0;
}
voidTIM1_IRQHandler(void)
TIM1中断处理函数
说明:
1ms中断1次
voidTIM1_UP_IRQHandler(void)
{
if(TIM_GetITStatus(TIM1,TIM_IT_Update)!
=RESET)
{
TIM_ClearITPendingBit(TIM1,TIM_IT_Update);
//清除中断标志
if(time1_NUM<
=900)//
{
time1_NUM++;
}
else
time1_NUM=0;
//Uart1_PutChar(0xfa);
//Uart5_PutChar(0x11);
//Uart3_PutChar(0xdd);
//
STM32f107T2定时器应用
inttime2_NUM;
voidTimer2_Configuration(void)
TIM2配置
voidTimer2_Configuration(void)
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
//打开TIM2定时器的时钟
TIM_DeInit(TIM2);
TIM_TimeBaseStructure.TIM_Period=2000;
TIM_TimeBaseInit(TIM2,&
//清中断,以免一启用中断后立即产生中断
//TIM_ClearFlag(TIM2,TIM_FLAG_Update);
TIM_ARRPreloadConfig(TIM2,ENABLE);
TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
//允许TIM2溢出中断
TIM_Cmd(TIM2,ENABLE);
//TIM2开启时钟
time2_NUM=0;
voidTIM2_IRQHandler(void)
TIM2中断处理函数
voidTIM2_IRQHandler(void)
if(TIM_GetITStatus(TIM2,TIM_IT_Update)!
TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
if(time2_NUM<
=80)//
time2_NUM++;
time2_NUM=0;
//Uart5_PutChar(0x22);
//Uart1_PutChar('
2'
);
//
STM32f107T3定时器应用
inttime3_NUM;
voidTimer3_Configuration(void)
TIM3配置
voidTimer3_Configuration(void)
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
//打开TIM3定时器的时钟
TIM_DeInit(TIM3);
TIM_TimeBaseInit(TIM3,&
//TIM_ClearFlag(TIM3,TIM_FLAG_Update);
TIM_ARRPreloadConfig(TIM3,ENABLE);
TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
//允许TIM3溢出中断
TIM_Cmd(TIM3,ENABLE);
//TIM3开启时钟
time3_NUM=0;
/*************************************************
TIM3中断处理函数
voidTIM3_IRQHandler(void)
if(TIM_GetITStatus(TIM3,TIM_IT_Update)!
TIM_ClearITPendingBit(TIM3,TIM_IT_Update);
if(time3_NUM<
=950)//
time3_NUM++;
time3_NUM=0;
//Uart5_PutChar(0x33);
3'
STM32f107T4定时器应用
inttime4_NUM;
voidTimer4_Configuration(void)
TIM4配置
voidTimer4_Configuration(void)
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);
//打开TIM4定时器的时钟
TIM_DeInit(TIM4);
TIM_TimeBaseInit(TIM4,&
TIM_ClearFlag(TIM4,TIM_FLAG_Update);
TIM_ARRPreloadConfig(TIM4,ENABLE);
TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE);
//允许TIM4溢出中断
TIM_Cmd(TIM4,ENABLE);
//TIM4开启时钟
time4_NUM=0;
TIM4中断处理函数
voidTIM4_IRQHandler(void)
if(TIM_GetITStatus(TIM4,TIM_IT_Update)!
TIM_ClearITPendingBit(TIM4,TIM_IT_Update);
if(time4_NUM<
=970)//
time4_NUM++;
time4_NUM=0;
//Uart5_PutChar(0x44);
4'
}
STM32f107T5定时器应用
inttime5_NUM;
voidTimer5_Configuration(void)
TIM5配置
voidTimer5_Configuration(void)
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5,ENABLE);
//打开TIM5定时器的时钟
TIM_DeInit(TIM5);
TIM_TimeBaseInit(TIM5,&
TIM_ClearFlag(TIM5,TIM_FLAG_Update);
TIM_ARRPreloadConfig(TIM5,ENABLE);
TIM_ITConfig(TIM5,TIM_IT_Update,ENABLE);
//允许TIM5溢出中断
TIM_Cmd(TIM5,ENABLE);
//TIM5开启时钟
time5_NUM=0;
TIM5中断处理函数
voidTIM5_IRQHandler(void)
if(TIM_GetITStatus(TIM5,TIM_IT_Update)!
TIM_ClearITPendingBit(TIM5,TIM_IT_Update);
if(time5_NUM<
=990)//1000US
time5_NUM++;
time5_NUM=0;
5'
//Uart5_PutChar(0x55);