定时器4 定时1s(可快速应用到项目中)--固件库开发

发布于:2025-02-10 ⋅ 阅读:(39) ⋅ 点赞:(0)

1.hal_timer.c

#include "stm32F10x.h"
#include "hal_timer.h"
#include "string.h"


/*******************************************************************************
* Function Name  : static void hal_timer4Config(void)
* Description    : 定时器硬件配置函数
* Input          : None
* Output         : None
* Return         : None
* Attention		 	 : None
*******************************************************************************/
static void hal_timer4Config(void)
{
	TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
	NVIC_InitTypeDef NVIC_InitStructure;
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM4, ENABLE);
	
	TIM_DeInit(TIM4); 
 	 TIM_TimeBaseStructure.TIM_Period = 10000-1;                         //1秒  
  	TIM_TimeBaseStructure.TIM_Prescaler = SystemCoreClock/10000 - 1;              
	TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;     
	TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up; 
	TIM_TimeBaseInit(TIM4, &TIM_TimeBaseStructure);				  
	TIM_ITConfig(TIM4, TIM_IT_Update, ENABLE); ///打开定时器4中断
					 
	TIM_Cmd(TIM4, ENABLE);   ///打开定时器4

	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//设置NVIC中断分组4
	NVIC_InitStructure.NVIC_IRQChannel = TIM4_IRQn;
	NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 5;///先占优先级
	NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;        ///从优先级
	NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
	NVIC_Init(&NVIC_InitStructure);
}


/*******************************************************************************
* Function Name  : void hal_timerInit(void)
* Description    : 定时器初始化
* Input          : None
* Output         : None
* Return         : None
* Attention		 	 : None
*******************************************************************************/
void hal_timerInit(void)
{
	hal_timer4Config();
}
/
void TIM4_IRQHandler(void)
{
	hal_LedProc();
	TIM_ClearFlag(TIM4, TIM_FLAG_Update);
}



2.hal_timer.h

#ifndef _HAL_TIMER_H_
#define _HAL_TIMER_H_


void hal_timerInit(void);

#endif



网站公告

今日签到

点亮在社区的每一天
去签到