/*---------------------------------------------------------- 文件名称:systick.c 文件描述:sysTick 系统滴答时钟1us中断函数库,中断时间可自由配置 备注:程序默认使用72M时钟,无分频 -----------------------------------------------------------------*/ #include "delay.h" static __IO u32 TimingDelay; /*----------------------------------------------------------------------- 程序名称:systick Init 程序描述:启动系统滴答定时器 systick 输入参数:无 返回参数:无 备注: 使用此功能之前需要调用此函数,初始化寄存器等参数 ----------------------------------------------------------*/ void SysTick_Init(void) { //SystemFrequency /1000 1ms中断一次 //SystemFrequency /100000 10us中断一次 //SystemFrequency /1000000 1us中断一次 if(SysTick_Config(SystemCoreClock /1000000)) //1us { /*Caputure error*/ while(1); } } /*--------------------------------------------- 程序名称:Delay_us 程序描述:延时nTime us 输入参数:nTime 返回参数:无 备注: 无 -----------------------------------------------*/ void Delay_us(__IO u32 nTime) { TimingDelay = nTime; while(TimingDelay != 0); } /*-------------------------------------------------- 程序名称:TimingDelay_Decrement 程序描述:数字递减到0 输入参数:无 返回参数:无 备注: 需要中断函数SysTick_Handle()中调用 ---------------------------------------------------------*/ void TimingDelay_Decrement(void) { if(TimingDelay != 0x00) { TimingDelay--; } }
在学习的时候发现,延时是错误的,因为这里的要是要依赖于系统的时钟所以在中断函数中要加入
<pre name="code" class="cpp">SysTick_Handle()
/** * @brief This function handles SysTick Handler. * @param None * @retval None */ void SysTick_Handler(void) { <span style="white-space:pre"> </span>TimingDelay_Decrement(); }
版权声明:本文为博主原创文章,未经博主允许不得转载。
时间: 2024-09-29 15:51:22