谁能告诉我这是什么高深的武功,
看不懂。。。
#include "SysTick.h"volatile uint32_t sysTickUptime = 0;
// Return system uptime in microseconds (rollover in 70minutes)
//返回 us
uint32_t micros(void)
{
register uint32_t ms, cycle_cnt;
do
{
ms = sysTickUptime; //中断服务函数每1ms执行一次++
cycle_cnt = SysTick->VAL; //当前值寄存器
} while (ms != sysTickUptime);
return (ms * 1000) + 1000 - ((cycle_cnt * 2 + 12) / 25);
}// Return system uptime in milliseconds (rollover in 49 days)
uint32_t millis(void)
{
return sysTickUptime;
}void SysTick_Init(void)
{
SysTick->LOAD = 12000; //SystemCoreClock/2 12Mhz 到0为1ms ///////////////////////////////////////////////48Mhz
SysTick->VAL = 0x00; //当前值寄存器
SysTick->CTRL = SysTick_CTRL_ENABLE_Msk | SysTick_CTRL_TICKINT_Msk; //11使能和中断
printf("SysTick Init Success!\r\n");
}void Delay_ms(uint16_t nms)
{
uint32_t t0 = micros();
while(micros() - t0 < nms * 1000);
}void Delay_us(uint32_t nus)
{
uint32_t t0 = micros();
while(micros() - t0 < nus);
}void Get_Time(unsigned long *time)
{
*time = millis();
}void SysTick_Handler(void)
{
sysTickUptime++;
}
看不懂。。。
#include "SysTick.h"volatile uint32_t sysTickUptime = 0;
// Return system uptime in microseconds (rollover in 70minutes)
//返回 us
uint32_t micros(void)
{
register uint32_t ms, cycle_cnt;
do
{
ms = sysTickUptime; //中断服务函数每1ms执行一次++
cycle_cnt = SysTick->VAL; //当前值寄存器
} while (ms != sysTickUptime);
return (ms * 1000) + 1000 - ((cycle_cnt * 2 + 12) / 25);
}// Return system uptime in milliseconds (rollover in 49 days)
uint32_t millis(void)
{
return sysTickUptime;
}void SysTick_Init(void)
{
SysTick->LOAD = 12000; //SystemCoreClock/2 12Mhz 到0为1ms ///////////////////////////////////////////////48Mhz
SysTick->VAL = 0x00; //当前值寄存器
SysTick->CTRL = SysTick_CTRL_ENABLE_Msk | SysTick_CTRL_TICKINT_Msk; //11使能和中断
printf("SysTick Init Success!\r\n");
}void Delay_ms(uint16_t nms)
{
uint32_t t0 = micros();
while(micros() - t0 < nms * 1000);
}void Delay_us(uint32_t nus)
{
uint32_t t0 = micros();
while(micros() - t0 < nus);
}void Get_Time(unsigned long *time)
{
*time = millis();
}void SysTick_Handler(void)
{
sysTickUptime++;
}