时钟树
寄存器
SysTick->LOAD
: 计时器装载值
SysTick->VAL
: 当前值
SysTick->CTRL
: 控制寄存器
延时初始化函数
- 计算AHB时钟
void delay_init()
{
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
//AHB的8分频选择作为systick
fac_us=SystemCoreClock/8000000; //为系统时钟的1/8
//在system_stm32f10x.c中定义SystemCoreClock为72MHz
//所以fac_us = 9
}
微秒延时函数
void delay_us(u32 nus)
{
u32 temp;
SysTick->LOAD=nus*fac_us;
//装载值(以500us为例子),将会装在500*9=4500
SysTick->VAL=0x00;
//清空计数器
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;
//开启定时器
do
{
temp=SysTick->CTRL