📄 init_timer.h
字号:
#ifndef _INIT_TIMER_H_
#define _INIT_TIMER_H_
//TIMER2中断优先级设定
void Init_NVIC_TIMER2(void)
{
NVIC_InitTypeDef NVIC_InitStructure;
//存储器映射,不用理
#ifdef VECT_TAB_RAM
NVIC_SetVectorTable(NVIC_VectTab_RAM, 0x0);
#else
NVIC_SetVectorTable(NVIC_VectTab_FLASH, 0x0);
//第0组,没有抢断优先级
//第4组,没有响应优先级
//第2组,有4个抢断,4个响应
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);//优先级分到第1组 总共5组
NVIC_InitStructure.NVIC_IRQChannel = TIM2_IRQChannel; //使用外部中断1
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;//阶级1
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 1; //阶层0
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);
//设置TIM2的中断
NVIC_Init(&NVIC_InitStructure);
#endif
}
//定时器2初始化
void Init_TIMER2(unsigned int time_ms)
{
Init_NVIC_TIMER2();
RCC->APB1ENR |= 1<<0; //TIM2时钟使能
TIM2->PSC = 7199; //预分频器7200,得到10Khz的计数时钟
TIM2->ARR = 10000; //自动重装
TIM2->CNT = 10*time_ms; //1s中断 1HZ
TIM2->DIER |=1<<0; //允许更新中断
TIM2->DIER |=1<<6; //允许触发中断
TIM2->SR |=(1<<0); //清楚中断标志
TIM2->CR1 =1<<7; //ARPE使能
TIM2->CR1 |=1<<4; //向下计数
TIM2->CR1 |=1<<0; //使能定时器2
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -