STM32f107定时器应用.docx

上传人:b****6 文档编号:6387236 上传时间:2023-01-05 格式:DOCX 页数:13 大小:15.89KB
下载 相关 举报
STM32f107定时器应用.docx_第1页
第1页 / 共13页
STM32f107定时器应用.docx_第2页
第2页 / 共13页
STM32f107定时器应用.docx_第3页
第3页 / 共13页
STM32f107定时器应用.docx_第4页
第4页 / 共13页
STM32f107定时器应用.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

STM32f107定时器应用.docx

《STM32f107定时器应用.docx》由会员分享,可在线阅读,更多相关《STM32f107定时器应用.docx(13页珍藏版)》请在冰豆网上搜索。

STM32f107定时器应用.docx

STM32f107定时器应用

//

//

/****************************************************************************************

**文件名称:

STM32f107T1定时器应用

**功能描述:

**参数:

None

**返回值:

None

**作 者:

汪仁海

**日 期:

2012年2月17日

**---------------------------------------------------------------------------------------

**修改人:

**日 期:

**---------------------------------------------------------------------------------------

*****************************************************************************************/

#include"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定时器应用

**功能描述:

**参数:

None

**返回值:

None

**作 者:

汪仁海

**日 期:

2012年2月17日

**---------------------------------------------------------------------------------------

**修改人:

**日 期:

**---------------------------------------------------------------------------------------

*****************************************************************************************/

#include"main.h"

inttime2_NUM;

/*************************************************

函数:

voidTimer2_Configuration(void)

功能:

TIM2配置

参数:

返回:

定时计算:

(1/(72/(36-1+1)))*2000us=1000us=1ms

**************************************************/

voidTimer2_Configuration(void)

{

TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);//打开TIM2定时器的时钟

TIM_DeInit(TIM2);//TIMx寄存器重设为缺省值

TIM_TimeBaseStructure.TIM_Period=2000;//自动重装载寄存器周期的值

TIM_TimeBaseStructure.TIM_Prescaler=36-1;//TIMx时钟频率除数的预分频值

TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;//采样分频

TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//向上计数模式

TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);

//清中断,以免一启用中断后立即产生中断

//TIM_ClearFlag(TIM2,TIM_FLAG_Update);

TIM_ARRPreloadConfig(TIM2,ENABLE);//允许自动重装载寄存器(ARR)

TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);//允许TIM2溢出中断

TIM_Cmd(TIM2,ENABLE);//TIM2开启时钟

time2_NUM=0;

}

/*************************************************

函数:

voidTIM2_IRQHandler(void)

功能:

TIM2中断处理函数

参数:

返回:

说明:

1ms中断1次

**************************************************/

voidTIM2_IRQHandler(void)

{

if(TIM_GetITStatus(TIM2,TIM_IT_Update)!

=RESET)

{

TIM_ClearITPendingBit(TIM2,TIM_IT_Update);//清除中断标志

if(time2_NUM<=80)//

{

time2_NUM++;

}

else

{

time2_NUM=0;

//Uart5_PutChar(0x22);

//Uart1_PutChar('2');

}

//

}

}

//

//

/****************************************************************************************

**文件名称:

STM32f107T3定时器应用

**功能描述:

**参数:

None

**返回值:

None

**作 者:

汪仁海

**日 期:

2012年2月17日

**---------------------------------------------------------------------------------------

**修改人:

**日 期:

**---------------------------------------------------------------------------------------

*****************************************************************************************/

#include"main.h"

inttime3_NUM;

/*************************************************

函数:

voidTimer3_Configuration(void)

功能:

TIM3配置

参数:

返回:

定时计算:

(1/(72/(36-1+1)))*2000us=1000us=1ms

**************************************************/

voidTimer3_Configuration(void)

{

TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//打开TIM3定时器的时钟

TIM_DeInit(TIM3);//TIMx寄存器重设为缺省值

TIM_TimeBaseStructure.TIM_Period=2000;//自动重装载寄存器周期的值

TIM_TimeBaseStructure.TIM_Prescaler=36-1;//TIMx时钟频率除数的预分频值

TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;//采样分频

TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//向上计数模式

TIM_TimeBaseInit(TIM3,&TIM_TimeBaseStructure);

//清中断,以免一启用中断后立即产生中断

//TIM_ClearFlag(TIM3,TIM_FLAG_Update);

TIM_ARRPreloadConfig(TIM3,ENABLE);//允许自动重装载寄存器(ARR)

TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);//允许TIM3溢出中断

TIM_Cmd(TIM3,ENABLE);//TIM3开启时钟

time3_NUM=0;

}

/*************************************************

函数:

voidTIM2_IRQHandler(void)

功能:

TIM3中断处理函数

参数:

返回:

说明:

1ms中断1次

**************************************************/

voidTIM3_IRQHandler(void)

{

if(TIM_GetITStatus(TIM3,TIM_IT_Update)!

=RESET)

{

TIM_ClearITPendingBit(TIM3,TIM_IT_Update);//清除中断标志

if(time3_NUM<=950)//

{

time3_NUM++;

}

else

{

time3_NUM=0;

//Uart5_PutChar(0x33);

//Uart1_PutChar('3');

}

}

}

//

//

/****************************************************************************************

**文件名称:

STM32f107T4定时器应用

**功能描述:

**参数:

None

**返回值:

None

**作 者:

汪仁海

**日 期:

2012年2月17日

**---------------------------------------------------------------------------------------

**修改人:

**日 期:

**---------------------------------------------------------------------------------------

*****************************************************************************************/

#include"main.h"

inttime4_NUM;

/*************************************************

函数:

voidTimer4_Configuration(void)

功能:

TIM4配置

参数:

返回:

定时计算:

(1/(72/(36-1+1)))*2000us=1000us=1ms

**************************************************/

voidTimer4_Configuration(void)

{

TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4,ENABLE);//打开TIM4定时器的时钟

TIM_DeInit(TIM4);//TIMx寄存器重设为缺省值

TIM_TimeBaseStructure.TIM_Period=2000;//自动重装载寄存器周期的值

TIM_TimeBaseStructure.TIM_Prescaler=36-1;//TIMx时钟频率除数的预分频值

TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;//采样分频

TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//向上计数模式

TIM_TimeBaseInit(TIM4,&TIM_TimeBaseStructure);

//清中断,以免一启用中断后立即产生中断

TIM_ClearFlag(TIM4,TIM_FLAG_Update);

TIM_ARRPreloadConfig(TIM4,ENABLE);//允许自动重装载寄存器(ARR)

TIM_ITConfig(TIM4,TIM_IT_Update,ENABLE);//允许TIM4溢出中断

TIM_Cmd(TIM4,ENABLE);//TIM4开启时钟

time4_NUM=0;

}

/*************************************************

函数:

voidTIM2_IRQHandler(void)

功能:

TIM4中断处理函数

参数:

返回:

说明:

1ms中断1次

**************************************************/

voidTIM4_IRQHandler(void)

{

if(TIM_GetITStatus(TIM4,TIM_IT_Update)!

=RESET)

{

TIM_ClearITPendingBit(TIM4,TIM_IT_Update);//清除中断标志

if(time4_NUM<=970)//

{

time4_NUM++;

}

else

{

time4_NUM=0;

//Uart5_PutChar(0x44);

//Uart1_PutChar('4');

}

}

}

//

//

/****************************************************************************************

**文件名称:

STM32f107T5定时器应用

**功能描述:

**参数:

None

**返回值:

None

**作 者:

汪仁海

**日 期:

2012年2月17日

**---------------------------------------------------------------------------------------

**修改人:

**日 期:

**---------------------------------------------------------------------------------------

*****************************************************************************************/

#include"main.h"

inttime5_NUM;

/*************************************************

函数:

voidTimer5_Configuration(void)

功能:

TIM5配置

参数:

返回:

定时计算:

(1/(72/(36-1+1)))*2000us=1000us=1ms

**************************************************/

voidTimer5_Configuration(void)

{

TIM_TimeBaseInitTypeDefTIM_TimeBaseStructure;

RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5,ENABLE);//打开TIM5定时器的时钟

TIM_DeInit(TIM5);//TIMx寄存器重设为缺省值

TIM_TimeBaseStructure.TIM_Period=2000;//自动重装载寄存器周期的值

TIM_TimeBaseStructure.TIM_Prescaler=36-1;//TIMx时钟频率除数的预分频值

TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;//采样分频

TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up;//向上计数模式

TIM_TimeBaseInit(TIM5,&TIM_TimeBaseStructure);

//清中断,以免一启用中断后立即产生中断

TIM_ClearFlag(TIM5,TIM_FLAG_Update);

TIM_ARRPreloadConfig(TIM5,ENABLE);//允许自动重装载寄存器(ARR)

TIM_ITConfig(TIM5,TIM_IT_Update,ENABLE);//允许TIM5溢出中断

TIM_Cmd(TIM5,ENABLE);//TIM5开启时钟

time5_NUM=0;

}

/*************************************************

函数:

voidTIM2_IRQHandler(void)

功能:

TIM5中断处理函数

参数:

返回:

说明:

1ms中断1次

**************************************************/

voidTIM5_IRQHandler(void)

{

if(TIM_GetITStatus(TIM5,TIM_IT_Update)!

=RESET)

{

TIM_ClearITPendingBit(TIM5,TIM_IT_Update);//清除中断标志

if(time5_NUM<=990)//1000US

{

time5_NUM++;

}

else

{

time5_NUM=0;

//Uart1_PutChar('5');

//Uart5_PutChar(0x55);

}

}

}

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 表格模板 > 合同协议

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1