STM32-STM32中SysTick系统时钟运用

SysTick一共有4个寄存器,名称和地址分别为
STK_CSR        0XE000E010        控制寄存器
STK_LOAD        0XE000E014        重载寄存器
STK_VAL        0XE000E018        当前值寄存器
STK_CALRB    0XE000E01C        校准值寄存器

依据系统时钟的延时函数
//延时1us
void delay_ms(u32 nus)
{
    u32 temp;
    SysTick->LOAD = 9*nus;   //使用9MHz的频率
    SysTick->VAL = 0x00;   //清空计数器
    SysTick->CTRL = 0x01;   //使能,减到零是无动作,采用外部时钟
    do
 {
    temp=SysTick->CTRL;//读取当前倒计数值
 }while ((temp&0x01)&&(!(temp&(1<<16))));   //等待时间到达
    SysTick->CRTL= 0x00;   //关闭计数器
    SysTick->VAL=0x00;   //清空计数器
}

//延时1ms
void delay_ms(u16 nms)
{
    u32 temp;
    SysTick->LOAD = 9000*nms;   //使用9MHz的频率
    SysTick->VAL = 0x00;   //清空计数器
    SysTick->CTRL = 0x01;   //使能,减到零是无动作,采用外部时钟
    do
 {
    temp=SysTick->CTRL;//读取当前倒计数值
 }while ((temp&0x01)&&(!(temp&(1<<16))));   //等待时间到达
    SysTick->CRTL= 0x00;   //关闭计数器
    SysTick->VAL=0x00;   //清空计数器
}

 

你可能感兴趣的:(嵌入式)