全球旧事资料 分类
基于stm32通用定时器设置的学习心得
为APB1总线,所以首先,得将APB1外设时钟打开。RCC_APB1PeriphClockCmdRCC_APB1Periph_TIM2ENABLE其次,就是定时器的相关参数信息的配置,这些参数信息都在TIM_TimeBaseI
itTypeDef这么一个结构体当中,所以得定义这么一个结构体变量。结构体中的有关成员含义如下:
TIM_TimeBaseI
itStrctureTIM_Prescaler0x1c20时钟预分频系数,看单词意思就知道了,即是将APB1时钟进行相应分频得到一个合适的频率TIM_TimeBaseI
itStrctureTIM_Cou
terModeTIM_Cou
terMode_Up计数模式TIM_TimeBaseI
itStrctureTIM_Period0x270f计数周期,即是往ARR寄存器中填的一个自动转载值,这个值等于目标值1TIM_TimeBaseI
itStrctureTIM_ClockDivisio
TIM_CKD_DIV1这是数字滤波器的相关设置,定时的时候不用外部时钟,所以这个设为0即可,TIM_CKD_DIV1这个就是等价于0,你要是设为其他值也不影
下面自然是初始化这个结构体当中的参数信息了。TIM_TimeBaseI
itTIM2TIM_TimeBaseI
itStrcture再次,就是定时器中断的相关配置了,在配置中断的时候特别一定要注意顺序,否则就会出问题,我一开始就是没注意这个顺序问题,看着错误还不知道怎么回事,还好后面被我发现,哈哈。在使能中断之前一定得先清掉中断中断标志位和中断挂起位,如下:
TIM_ClearFlagTIM2TIM_FLAG_UpdateTIM_ClearITPe
di
gBitTIM2TIM_FLAG_UpdateTIM_ITCo
figTIM2TIM_IT_UpdateENABLE
如果不先清掉挂起位和标志位,那么一使能中断,就立马进入中断服务函数,显然这不是我们想要的,我就被这个问题整了一下。接下来就是使能定时器了,
fTIM_CmdTIM2ENABLE这自不用说。最后,就是配置NVIC嵌套向量中断控制寄存器了。
NVIC_SetVectorTableNVIC_VectTab_FLASH0x00theseco
dparameter
mustbeamultipleof0x200NVIC_PriorityGroupCo
figNVIC_PriorityGroup_22
bits
for
preemptio

priority
2
bits
for
subpriorityNVIC_I
itStructureNVIC_IRQCha
el

TIM2_IRQ
NVIC_I
itStructureNVIC_IRQCha
elPreemptio
Priority

0NVIC_I
itStructureNVIC_IRQCha
elSubPriority

0NVIC_I
itStructureNVIC_IRQCha
elCmd

ENABLENVIC_I
itNVIC_I
itStructure其实,我认为在主函数里调用定时器配置函数和NVIC配置函数时,应该先
调用NVIC配置函数,因为先设置好中断分组等相关参数信息后,再去打开定时器,定时器中断就能按照NVIC的信息去工作。接下来的就是在stm32f10x_itc中写自己的中断服务函数了。voidTIM2_IRQHa
dlervoid到此,通用定时器配置成功。
tips感谢大家的阅读,本文由我司收集整编。仅供参阅!
fr
好听全球资料 返回顶部