论坛上用原子的开发板也学习了许多,谢谢大家!
以下更改,如果有更好的实现方法,请指正!
更改的目的是为了将systick计数器用于中断定时,作为一个系统时间,开机后不停运行,
将来可以作为一个多任务的时间节拍使用!
//Delay.c
//使用芯片的 SysTick 部件进行软件延时的操作
//
#include "delay.h"
#include "sys.h"
vu32 system_time =0u; //系统时间计数器,单位和节拍重装寄存器的设置值有关
static vu16 systick_reload_val; //系统节拍重装值
static vu16 systick_cnt_of_1us; //1us时间内的systick的计数值
//初始化延迟函数
//SYSTICK的时钟固定为HCLK时钟的1/8
//SYSCLK:系统时钟(MHz)
void delay_init(u8 SYSCLK)
{
SysTick->CTRL = SysTick_Counter_Clear; //清除(停止)
SysTick->CTRL &= SysTick_CLKSource_HCLK_Div8; //选择外部时钟(bit2=0 HCLK/8)
systick_reload_val= (u16)((SYSCLK *CONST_SYSTICK_NUM_OF_US) >>3); //节拍定时 CONST_SYSTICK_NUM_OF_US(us)
SysTick->CTRL |= BIT