滴答定时器中断时间:10us,可通过注释来自己调整中断时间
static __IO uint32_t TimingDelay;
void delay_ms(__IO uint32_t nms)
{
TimingDelay = nms;
//SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk; // 使能SysTick定時器
while(TimingDelay != 0);
}
void delay_us(__IO uint32_t nus)
{
TimingDelay = nus;
while(TimingDelay != 0);
}
void SoftwareDelay(uint32_t nCount)
{
for(; nCount != 0; nCount--);
}
void TimingDelay_Decrement(void)
{
if (TimingDelay != 0x00)
{
TimingDelay--;
}
}
void Systick_Init(void)
{
/* SystemFrequency / 1000 1ms中断一次
* SystemFrequency / 10000 100us中断一次
* SystemFrequency / 100000 10us中断一次
* SystemFrequency / 1000000 1us中断一次
*/
if (SysTick_Config(SystemCoreClock / 100000))//10微秒
{
/* Capture error */
while (1);
}
// 关闭滴答定时器
//SysTick->CTRL &= ~ SysTick_CTRL_ENABLE_Msk;
// 使能SysTick定時器
SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;
}
void SysTick_Handler(void)
{
//10us
Time_base_cnt++;
if(Time_base_cnt >= 10)
{
Time_base_cnt = 0;
Time_100us_cnt++;
}
}