volatile unsigned long TimingDelay; // 延时时间,注意定义为全局变量
void SysTick_Handler(void)
{
SysTick->VAL=0;
if (TimingDelay != 0x00)
{
TimingDelay--;
}
}
void delay_init()
{
SysTick->CTRL |= SysTick_CLKSource_HCLK; //选择内部系统时钟源
SysTick->VAL=0;
SysTick->LOAD=70; //8M 10us 时间
SysTick->CTRL&=0xfffffffe; //关闭中断
}
void delay_us(u32 nus)
{
TimingDelay=nus;
SysTick->VAL=0;
SysTick->CTRL|=0x01 ; //开始倒数
while(TimingDelay!=0){};
SysTick->CTRL&=0xfe ; //关闭倒数
}
void delay_ms(u16 nms)
{
delay_us(nms*100);
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
一周热门 更多>