首页 > 代码库 > STM32定时器设置浅谈
STM32定时器设置浅谈
1、嵌套中断控制器的配置
void NVIC_Configuration()
{
NVIC_InitTypeDef NVIC_InitStructure;
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
- //选择TIM2的中断通道
- NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQChannel;
- //抢占式中断优先级设置为0
- NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
- //响应式中断优先级设置为0
- NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
- //使能中断
- NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
- NVIC_Init(&NVIC_InitStructure);
- voidTimer_Config(void)
- {
- RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
- TIM_DeInit(TIM2);
- TIM_TimeBaseStructure.TIM_Period=2000-1; //自动重装载寄存器的值
- TIM_TimeBaseStructure.TIM_Prescaler=(36000-1); //时钟预分频数
- TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1; //采样分频
- TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式
- TIM_TimeBaseInit(TIM2,&TIM_TimeBaseStructure);
- TIM_ClearFlag(TIM2,TIM_FLAG_Update); //清除溢出中断标志
- TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
- TIM_Cmd(TIM2,ENABLE); /开启时钟
- }
2、发生中断时间
发生中断时间 =(TIM_Prescaler+1)*(TIM_Period+1)/FLK
例如:发生中断时间 (2000-1+1)*(36000-1+1)/72000000 =1秒
STM32定时器设置浅谈
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。