当前位置:文档之家› STM32通用定时器(TIM2-5)基本用法

STM32通用定时器(TIM2-5)基本用法

由上图可知,当 APB1 的预分频系数为 1 时,这个倍频器不起作用,定时器的时钟频率等 于 APB1 的频率;当 APB1 的预分频系数为其它数值(即预分频系数为 2、4、8 或 16)时, 这个倍频器起作用,定时器的时钟频率等于 APB1 的频率两倍。也就是,当 APB1 不分频, TIM3 的时钟速度为 36MHz,当 2 分频是,APB1 变成 18MHz,但是 TIM 又会倍频,即 TIM 时钟等于 18*2=36MHz。这里我们用向上计数的方式,即 TIMx_CNT 中的计数值达到 TIMx_ARR 中的值时,产生中断,TIMx_CNT 又从 0 开始计。 按以下步骤编程: 1.系统初始化,主要初始化时钟等。 2.GPIO 初始化,用于 LED,有了灯就便于观察了。 3.TIM3 的配置。 4.NVIC 的配置。 5.编写中断服务函数。
if(TIM_GetITStatus(TIM3 , TIM_IT_Update) == SET) { TIM_ClearITPendingBit(TIM3 , TIM_FLAG_Update); if(GPIO_ReadOutputDataBit(GPIOA,GPIO_Pin_8)) GPIO_ResetBits(GPIOA, GPIO_Pin_8); else GPIO_SetBits(GPIOA, GPIO_Pin_8); } } //注意使能定时器时钟
void TIMER3_Init() { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; TIM_DeInit(TIM3); RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE); TIM_TimeBaseStructure.TIM_Period=10000;//ARR 的值 TIM_TimeBaseStructure.TIM_Prescaler=7200-1; TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式 TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE); TIM_Cmd(TIM3, ENABLE); //开启时钟 }
void GPIO_PA_Init() {//PA8 管脚配置 GPIO_InitTypeDef GPIO_InitStructure; GPIO_DeInit(GPIOA); GPIO_InitStructure.GPIO_Pin=GPIO_Pin_8; GPIO_InitStructure.GPIO_Speed=GPIO_Speed_10MHz; GPIO_InitStructure.GPIO_Mode=GPIO_Mode_Out_PP ;//推挽输出 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO, ENABLE);//使能端口时钟 A GPIO_Init(GPIOA, &GPIO_InitStructure); }
void NVIC_Configuration() { NVIC_InitTypeDef NVIC_InitStructure; NVIC_PriorityGroupConfig(NVIC_PriorityGroup_0); // 抢占式优先级别 NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQChannel;//指定中断源 NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;// 指定响应优先级别 1 NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure); }
int main(void) { Stm32_Clock_Init(9); //系统时钟设置 delay_init(72); //延时初始化 GPIO_PA_Init(); TIMER3_Init(); NVIC_Configuration(); while(1); }
void TIM3_er() {
STM32 通用定时器(TIM2-5)基本用法
STM32 的定时器是个强大的模块,定时器使用的频率也是很高的,定时器可以做一些基 本的定时,还可以做 PWM 输出或者输入捕获功能。从系统框架图下看,名为 TIMx 的有八 个,其中 TIM1 和 TIM8 挂在 APB2 总线上,而 TIM2-TIM7 则挂在 APB1 总线上。其中 TIM1&TIM8 称为高级控制定时器(advanced control timer).他们所在的 APB2 总线也比 APB1 总线要好。APB2 可以工作在 72MHz 下,而 APB1 最大是 36MHz。
相关主题