原创 Tim2基本应用笔记

2008-10-13 15:30 4733 7 8 分类: MCU/ 嵌入式


【原创】STM32TIMx如何设置成普通定时器


这个程序是配套英贝特的EMSTM32V1的开发板https://static.assets-stash.eet-china.com/album/old-resources/2008/10/13/0053743a-c988-4b89-8d40-9789cb86d9e7.rar下载整个测试程序
实现的功能是让开发板上的LED周期性的发光



下面以stm32TIM2作为实例一步步配置成为定时器:



1对定时器的基本配置



 
TIM_TimeBaseStructure.TIM_Period = 65535;  //
设置自动装载寄存器       



 
TIM_TimeBaseStructure.TIM_Prescaler = 100;  //
分频计数    



 
TIM_TimeBaseStructure.TIM_ClockDivision = 0;   



 
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //
选择向上计数



 
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);



TIM_Cmd(TIM2, ENABLE);  //是能定时器



2始能定时器的中断:



/* TIM IT enable */



 TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);



注意:



以上函数中的TIM_IT_Updata根据要是能的中断具体配置



3在开启时钟里一定要打开TIM2的时钟,函数表达式如下:



RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,
ENABLE);



4中断向量函数的编写:



void NVIC_Configuration(void)



{



 
NVIC_InitTypeDef NVIC_InitStructure;



  



#ifdef 
VECT_TAB_RAM 
//如果程序在ram中调试那么定义中断向量表在Ram中否则在Flash



  /*
Set the Vector Table base location at 0x20000000 */



 
NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);



#else 
/* VECT_TAB_FLASH  */



  /*
Set the Vector Table base location at 0x08000000 */



 
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);  



#endif



 



  /*
Enable the TIM2 global Interrupt */



 
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQChannel;



 
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;



 
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0; 



 
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;



 
NVIC_Init(&NVIC_InitStructure);



}



5中断函数的编写:



当有TIM2的无论哪个中断触发中断发生那么就会进入这个函数



TIM2_IRQHandler(void)



所以这个更新事件的中断判断要依靠以下语句:



if (TIM_GetITStatus(TIM2,
TIM_IT_Update)  == SET)



 



按照以上步骤配置可以顺利进行定时器的基本定时应用



 



 



2008.10.111852



文章评论1条评论)

登录后参与讨论

用户136158 2008-11-20 16:03

博主是否可以试下把TIM2的ch1映射到PA15进行输入捕捉。我映射前,捕捉数据一切正常,映射了之后出现随机的数据,很不正常。 AFIO时钟我也打开了,PA15原来的JTAG-DP功能也关闭了。 一直百思不得其解,希望博主帮忙试验下。
相关推荐阅读
用户165162 2010-10-15 23:43
CANopen简介
CANopen简介    CANopen协议集定义了基于CAN的分布式工业自动化系统的应用标准以及CAN应用层通信标准。CANopen是CAN-in-Automation(CiA)定义的标准之一,并且...
用户165162 2009-03-04 22:34
TServerSocket和TClientSocket地运用(转载)
在网络编程中,WinSocket API编程是最基本,也是最麻烦的地方(说句不怕影响形象的话,我对此就是一知半解)。但是,如果你是使用C++Builder作为编程平台,你就偷着乐吧,有了BCB,菜鸟变...
用户165162 2008-11-09 11:40
奥巴马就职演讲
Hello, Chicago!   芝加哥,你好!If there is anyone out there who still doubts that America is a place where...
用户165162 2008-11-02 12:43
STM32 RTC 对晶振的要求实在不地道
zhwxc 发表于 2008-8-19 18:00 ST MCU ←返回版面 楼主: STM32 RTC 对晶振的要求实在不地道今天到电子市场找了一下,几乎都是12.5p负载电容的32768晶...
用户165162 2008-11-01 14:50
模糊K均值算法的C++实现
//****************************************************************************////文件名:kaverage.cpp  ...
用户165162 2008-10-20 17:50
10种软件滤波方法的示例程序[转帖]
1、限副滤波 /* A值可根据实际情况调整 value为有效值,new_value为当前采样值 滤波程序返回有效的实际值 */ #define A 10 char value; char filter...
我要评论
1
7
关闭 站长推荐上一条 /2 下一条