SysTick系统定时器配置
驱动文件(systick.c)和头文件(systick.h)放在public文件夹。
systick定时器是内核一个外设。一个24位向下递减定时器。
每计数一次需要的时间为1/systick(systick是系统定时器时钟)。
systick定时器时钟可以直接取自系统时钟(72M);也可以经过系统时钟8频后得到(9M)。
这里采用后者(9M);则每计数一次时间为1/9us。也就是1us计数9次。
有us和ms延时两种。
systick.c
#include "SysTick.h"
static u8 fac_us=0; //us延时倍乘数
static u16 fac_ms=0; //ms延时倍乘数
void SysTick_Init(u8 SYSCLK) //初始化延迟函数
{
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8); //systick时钟固定为AHB时钟(72M)的1/8;9M。
fac_us=SYSCLK/8; //SYSCLK为系统时钟(72M)
fac_ms=(u16)fac_us*1000;
}
//nus取值为0到798915us。
void delay_us(u32 nus) //us延时函数;输入nus:要延时的us数
{
u32 temp;
SysTick->LOAD=nus*fac_us; // fac_us是延迟1us所需要的计数次数
SysTick->VAL=0x00; //
SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ; //
do