/*----------------------------------------------------------
文件名称: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--;
}
}
在学习的时候发现,延时是错误的,因为这里的要是要依赖于系统的时钟所以在中断函数中要加入
SysTick_Handle()
/**
* @brief This function handles SysTick Handler.
* @param None
* @retval None
*/
void SysTick_Handler(void)
{
TimingDelay_Decrement();
}
上一篇:STM32按键控制灯
下一篇:STM32入门之中断
推荐阅读最新更新时间:2024-11-12 22:05
设计资源 培训 开发板 精华推荐
- 涂鸦智能[红外遥控器]
- AC164138-1,用于 868、915-MHz 无线射频收发器的演示板
- 使用 Richtek Technology Corporation 的 RT2657 的参考设计
- DC2161A-A、LTC4231IMS-1 演示板、具有闩锁功能的微功率热插拔控制器
- LT8303ES5 30 至 80Vin、24Vout 隔离反激式转换器的典型应用电路
- ADA4075-2ARZ 低功耗运算放大器的典型 DAC 输出滤波器电路(差分)
- LTC2656-L16 演示板,具有 1.25V 基准的八通道 SPI 16 位电压输出 DAC
- DC2084A,使用具有电源系统管理功能的 LTC3884EUK 多相单路 240A 输出同步降压转换器的演示板
- IP6510多协议车充验证板
- 使用 ROHM Semiconductor 的 BD48K50G-TL 的参考设计