56 lines
1.0 KiB
C
Raw Normal View History

2021-08-04 10:46:24 +08:00
//SYSCLK <20><>ʼ<EFBFBD><CABC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>
#include "delay.h"
static uint32_t fac_us = 0; //us <20><>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
/**
* @brief <EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD>ӳٺ<EFBFBD><EFBFBD><EFBFBD>
* @param SYSCLK: ϵͳʱ<EFBFBD><EFBFBD>Ƶ<EFBFBD><EFBFBD>
*/
void SYSCLK_Init(uint16_t SYSCLK)
{
HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK);
fac_us = SYSCLK;
}
/**
* @brief us <EFBFBD>ӳٺ<EFBFBD><EFBFBD><EFBFBD>
* @param nus: us <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ɳ<EFBFBD><EFBFBD><EFBFBD> 1000
*/
void Delay_us(uint32_t nus)
{
uint32_t ticks, told, tnow;
uint32_t tcnt = 0;
uint32_t reload = SysTick->LOAD; //LOAD <20><>ֵ
ticks = nus * fac_us; //<2F><>Ҫ<EFBFBD>Ľ<EFBFBD><C4BD><EFBFBD><EFBFBD><EFBFBD>
told = SysTick->VAL; //<2F><>ǰ<EFBFBD><C7B0><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֵ
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;
}
};
}
/**
* @brief ms <EFBFBD>ӳٺ<EFBFBD><EFBFBD><EFBFBD>
* @param nms: ms <EFBFBD><EFBFBD>
*/
void Delay_ms(uint16_t nms)
{
uint32_t i;
for (i = 0; i < nms; i++)
Delay_us(1000);
}