TIM_InternalClockConfig(TIM2);
时间: 2024-03-04 08:02:37 浏览: 106
TIM_InternalClockConfig(TIM2) 这个函数是用来配置 TIM2 定时器时钟源为内部时钟的。这个函数的作用是将 TIM2 的时钟源设置为内部时钟,即 APB1 总线时钟。
在使用这个函数之前,需要先确保已经初始化了 TIM2 定时器,并且配置了相关的定时器参数。一般情况下,这个函数会在 TIM2 初始化的函数中被调用。
需要注意的是,如果要使用外部时钟源来驱动 TIM2 定时器,可以使用 TIM_ETRClockMode1Config() 或者 TIM_ETRClockMode2Config() 函数来配置。
相关问题
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); TIM_InternalClockConfig(TIM2); TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInitStructure.TIM_Period = 10 - 1; TIM_TimeBaseInitStructure.TIM_Prescaler = 7200 - 1; TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure); TIM_ClearFlag(TIM2, TIM_FLAG_Update); TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE); NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); NVIC_InitTypeDef NVIC_InitStructure; NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn; NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2; NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; NVIC_Init(&NVIC_InitStructure); TIM_Cmd(TIM2, ENABLE);
这段代码主要是用于配置和启用TIM2定时器的功能。下面是对代码的解析:
1. RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE);
这行代码用于使能TIM2的时钟。
2. TIM_InternalClockConfig(TIM2);
这行代码用于配置TIM2的时钟源为内部时钟。
3. TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;
这行代码定义了一个结构体TIM_TimeBaseInitStructure,用于配置TIM2的基本参数。
4. TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;
这行代码设置TIM2的时钟分频系数为1。
5. TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;
这行代码设置TIM2的计数模式为向上计数。
6. TIM_TimeBaseInitStructure.TIM_Period = 10 - 1;
这行代码设置TIM2的自动重装载寄存器的值为10-1,即计数值为10时重新装载。
7. TIM_TimeBaseInitStructure.TIM_Prescaler = 7200 - 1;
这行代码设置TIM2的预分频系数为7200-1,即每7200个时钟周期计数一次。
8. TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;
这行代码设置TIM2的重复计数器的值为0,表示不进行重复计数。
9. TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure);
这行代码用于根据上述配置初始化TIM2的基本参数。
10. TIM_ClearFlag(TIM2, TIM_FLAG_Update);
这行代码用于清除TIM2的更新标志位。
11. TIM_ITConfig(TIM2, TIM_IT_Update, ENABLE);
这行代码用于使能TIM2的更新中断。
12. NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
这行代码用于设置中断优先级分组,此处设置为2位抢占优先级,2位响应优先级。
13. NVIC_InitTypeDef NVIC_InitStructure;
这行代码定义了一个结构体NVIC_InitStructure,用于配置中断向量。
14. NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQn;
这行代码设置中断通道为TIM2的中断。
15. NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
这行代码使能中断通道。
16. NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;
这行代码设置中断抢占优先级为2。
17. NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1;
这行代码设置中断响应优先级为1。
18. NVIC_Init(&NVIC_InitStructure);
这行代码用于根据上述配置初始化中断向量。
19. TIM_Cmd(TIM2, ENABLE);
这行代码用于使能TIM2定时器。
void PWM_Init(void) { RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); TIM_InternalClockConfig(TIM2); TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure; TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1; TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up; TIM_TimeBaseInitStructure.TIM_Period = 100 - 1; //ARR TIM_TimeBaseInitStructure.TIM_Prescaler = 36 - 1; //PSC TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0; TIM_TimeBaseInit(TIM2, &TIM_TimeBaseInitStructure); TIM_OCInitTypeDef TIM_OCInitStructure; TIM_OCStructInit(&TIM_OCInitStructure); TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1; TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_High; TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable; TIM_OCInitStructure.TIM_Pulse = 0; //CCR TIM_OC3Init(TIM2, &TIM_OCInitStructure); TIM_Cmd(TIM2, ENABLE); }
这段代码是用于初始化一个PWM输出的定时器(TIM2)和对应的GPIO引脚(GPIOA_Pin_2)。具体的初始化步骤如下:
1. 开启TIM2定时器的时钟和GPIOA引脚的时钟。
2. 配置GPIOA_Pin_2引脚为复用功能,推挽输出模式。
3. 配置TIM2定时器的时钟源为内部时钟。
4. 配置TIM2定时器的计数模式为向上计数模式。
5. 配置TIM2定时器的自动重装载寄存器值(TIM_Period)为99,即ARR寄存器的值为100-1。
6. 配置TIM2定时器的预分频值(TIM_Prescaler)为35,即PSC寄存器的值为36-1。
7. 配置TIM2通道3的输出比较模式为PWM模式1,输出极性为高电平有效。
8. 配置TIM2通道3的输出状态为使能状态。
9. 配置TIM2通道3的占空比(TIM_Pulse)为0,即CCR寄存器的值为0。
10. 使能TIM2定时器。
这样就完成了PWM输出的初始化配置。
阅读全文