STM32中的delay.c

STM32中systick下有CTRL、LOAD 、VAL等寄存器
CTRL:SysTick控制和状态寄存器
LOAD:SysTick重装载值寄存器
VAL:SysTick当前值寄存器
CALIB:SysTick校准值寄存器

#include"delay.h"
void delay_init(void)
{
    SysTick->CTRL &=~(1<<2);//使用外核时钟
}
void delay_ms(u16 nms)
{
    SysTick->CTRL &=~(1<<2);
    SysTick->LOAD =9000*nms;//预装值
    SysTick->VAL=0;//清零



    SysTick->CTRL |=1<<0;//启动定时器
    while(!(SysTick->CTRL &(1<<16)));
    SysTick->CTRL &=~(1<<0);
}
void delay_us(u16 nus)
{
    SysTick->CTRL &=~(1<<2);
    SysTick->LOAD =9*nus;//预装值
    SysTick->VAL=0;//清零



    SysTick->CTRL |=1<<0;//启动定时器
    while(!(SysTick->CTRL &(1<<16)));
    SysTick->CTRL &=~(1<<0);
}

你可能感兴趣的:(Arm)