tim2中断服务子程序初始化代码
时间: 2023-07-29 12:13:23 浏览: 68
TIM2中断服务子程序的初始化代码主要包括以下几个步骤:
1. 使能TIM2时钟:首先需要使能TIM2的时钟,才能对它进行配置和使用。可以通过RCC_APB1PeriphClockCmd()函数来实现。
2. 配置TIM2的基本参数:包括预分频值、计数值、计数模式等。可以通过TIM_TimeBaseInit()函数来进行配置。
3. 配置TIM2的中断:包括使能中断、设置中断优先级等。可以通过NVIC_Init()函数来进行配置。
4. 编写TIM2中断服务子程序:在中断服务子程序中完成需要执行的操作,比如更新计数器、处理数据等。
下面是一个示例代码,用于初始化TIM2中断服务子程序:
```
#include "stm32f10x.h"
void TIM2_IRQHandler(void)
{
//在此编写中断服务子程序的代码
}
void TIM2_Init(void)
{
//使能TIM2时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
//配置TIM2的基本参数
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStruct;
TIM_TimeBaseInitStruct.TIM_Period = 999;
TIM_TimeBaseInitStruct.TIM_Prescaler = 7199;
TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;
TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseInitStruct.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStruct);
//配置TIM2的中断
NVIC_InitTypeDef NVIC_InitStruct;
NVIC_InitStruct.NVIC_IRQChannel = TIM2_IRQn;
NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;
NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStruct);
//使能TIM2中断
TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
}
```
在上面的代码中,TIM2的预分频值为7199,计数值为999,所以TIM2的时钟频率为72MHz/7200=10kHz,计数周期为1000,即每隔100ms产生一次中断。TIM2中断的优先级为0(最高),子优先级为1。在TIM2中断服务子程序中可以编写需要执行的代码,比如更新计数器、处理数据等。
阅读全文