⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 init_timer.h

📁 STM32_LCD5110资料
💻 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 + -