56 lines
1.0 KiB
C
56 lines
1.0 KiB
C
|
|
//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);
|
|||
|
|
}
|