You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
69 lines
1.4 KiB
69 lines
1.4 KiB
1 week ago
|
/*
|
||
|
* bsp_TIMER.c
|
||
|
*
|
||
|
* Created on: Oct 26, 2023
|
||
|
* Author: shiya
|
||
|
*/
|
||
|
#include "bsp_TIMER.h"
|
||
|
|
||
|
#include "bsp_mqtt.h"
|
||
|
//返回值::1-正常;0-错误
|
||
|
uint8_t GF_BSP_TIMER_Init()
|
||
|
{
|
||
|
HAL_TIM_Base_Start_IT(&htim1);
|
||
|
HAL_TIM_Base_Start_IT(&htim8);
|
||
|
return 1;
|
||
|
}
|
||
|
|
||
|
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
|
||
|
{
|
||
|
//100ms - WatchDog
|
||
|
if(htim->Instance == TIM1)//APB2=200Mhz,htim1.Init.Prescaler = 2000-1;htim1.Init.Period = 10000-1; TIM1=100ms
|
||
|
{
|
||
|
GF_BSP_Interrupt_Run_CallBack(DF_BSP_InterCall_TIM1_100ms_PeriodElapsedCallback);
|
||
|
|
||
|
}
|
||
|
//2ms - MainLoop
|
||
|
if(htim->Instance == TIM8)//APB2=200Mhz,htim8.Init.Prescaler = 2000-1;htim8.Init.Period = 200-1; TIM8=2ms
|
||
|
{
|
||
|
GF_BSP_Interrupt_Run_CallBack(DF_BSP_InterCall_TIM8_2ms_PeriodElapsedCallback);
|
||
|
//bsp_mqtt_test();
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void GF_BSP_TIMER_DelayUS(uint32_t n)
|
||
|
{
|
||
|
uint32_t ticks;
|
||
|
uint32_t told;
|
||
|
uint32_t tnow;
|
||
|
uint32_t tcnt = 0;
|
||
|
uint32_t reload;
|
||
|
|
||
|
reload = SysTick->LOAD;
|
||
|
ticks = n * (SystemCoreClock / 1000000);
|
||
|
|
||
|
tcnt = 0;
|
||
|
told = SysTick->VAL;
|
||
|
|
||
|
while (1)
|
||
|
{
|
||
|
tnow = SysTick->VAL;
|
||
|
if (tnow != told)
|
||
|
{
|
||
|
if (tnow < told)
|
||
|
{
|
||
|
tcnt += told - tnow;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
tcnt += reload - tnow + told;
|
||
|
}
|
||
|
told = tnow;
|
||
|
if (tcnt >= ticks)
|
||
|
{
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|