网上方法貌似不多,自己写一个
TIM_HandleTypeDef htim6;
/* TIM6 init function */
void MX_TIM6_Init(void)
{
TIM_MasterConfigTypeDef sMasterConfig = {0};
htim6.Instance = TIM6;
htim6.Init.Prescaler = 7200-1; //7200-1表示将72MHz/7200,分频至10k
htim6.Init.Period = 1000-1; //以10kHz频率定时1次,每1000次中断1次。
htim6.Init.ClockDivision = 0x0;
htim6.Init.CounterMode = TIM_COUNTERMODE_UP;
HAL_TIM_Base_Init(&htim6);
HAL_TIM_Base_Start_IT(&htim6);
}
//定时器底层驱动,开启时钟,设置中断优先级
//此函数会被HAL_TIM_Base_Init()函数调用
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim)
{
if(htim-》Instance==TIM6)
{
__HAL_RCC_TIM6_CLK_ENABLE(); //使能TIM6时钟
HAL_NVIC_SetPriority(TIM6_IRQn,1,3); //设置中断优先级,抢占优先级1,子优先级3
HAL_NVIC_EnableIRQ(TIM6_IRQn); //开启ITM3中断
}
}
//定时器6中断服务函数
void TIM6_IRQHandler(void)
{
HAL_TIM_IRQHandler(&htim6);
}
//回调函数,定时器中断服务函数调用
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim==(&htim6))
{
if(times 《 8) times ++; //定时器周期中断处理函数,尽量别处理太复杂
else times = 8;
}
}
网上方法貌似不多,自己写一个
TIM_HandleTypeDef htim6;
/* TIM6 init function */
void MX_TIM6_Init(void)
{
TIM_MasterConfigTypeDef sMasterConfig = {0};
htim6.Instance = TIM6;
htim6.Init.Prescaler = 7200-1; //7200-1表示将72MHz/7200,分频至10k
htim6.Init.Period = 1000-1; //以10kHz频率定时1次,每1000次中断1次。
htim6.Init.ClockDivision = 0x0;
htim6.Init.CounterMode = TIM_COUNTERMODE_UP;
HAL_TIM_Base_Init(&htim6);
HAL_TIM_Base_Start_IT(&htim6);
}
//定时器底层驱动,开启时钟,设置中断优先级
//此函数会被HAL_TIM_Base_Init()函数调用
void HAL_TIM_Base_MspInit(TIM_HandleTypeDef *htim)
{
if(htim-》Instance==TIM6)
{
__HAL_RCC_TIM6_CLK_ENABLE(); //使能TIM6时钟
HAL_NVIC_SetPriority(TIM6_IRQn,1,3); //设置中断优先级,抢占优先级1,子优先级3
HAL_NVIC_EnableIRQ(TIM6_IRQn); //开启ITM3中断
}
}
//定时器6中断服务函数
void TIM6_IRQHandler(void)
{
HAL_TIM_IRQHandler(&htim6);
}
//回调函数,定时器中断服务函数调用
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
if(htim==(&htim6))
{
if(times 《 8) times ++; //定时器周期中断处理函数,尽量别处理太复杂
else times = 8;
}
}
举报