Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->/*
* STM32F10x 使用SysTick的延时函数
* 版本.........: 1.0
* 作者.........: 陈利栋
* 文件名.......: delay.h
* 创建时间.....: 2010.06.26
* 最后修改.....: 2010.06.26
*
* 共4个延时函数,其中delay可以直接使用,其余3个需要先调用初始化函数delay_init
*
* 参数最大值:
* delay : 0xffffffff
* delay_us : 0xffffff / (HCLK / 8000000)
* delay_ms : 0xffffff / (HCLK / 8000) 特别注意主频72M时为1864
* delay_s : 0xffff
*/
#ifndef __DELAY_H
#define __DELAY_H

#include "stm32f10x_type.h"
#include "stm32f10x_systick.h"
#include "stm32f10x_rcc.h"

extern void delay(u32 i);
extern void delay_init(void);
extern void delay_us(u32 i);
extern void delay_ms(u16 i);
extern void delay_s(u16 n);

#endif /* __DELAY_H */

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->/*
* STM32F10x 使用SysTick的延时函数
* 版本.........: 1.0
* 作者.........: 陈利栋
* 文件名.......: delay.c
* 创建时间.....: 2010.06.26
* 最后修改.....: 2010.06.26
*/
#include "delay.h"

static u8 delay_fac_us = 0; // us延时倍乘数
static u16 delay_fac_ms = 0; // ms延时倍乘数
static FlagStatus Status;

void delay(u32 i)
{
while (--i);
}

void delay_init(void)
{
RCC_ClocksTypeDef RCC_ClocksStatus;

RCC_GetClocksFreq(&RCC_ClocksStatus);
SysTick_CLKSourceConfig(SysTick_CLKSource_HCLK_Div8);
SysTick_ITConfig(DISABLE);
delay_fac_us = RCC_ClocksStatus.HCLK_Frequency / 8000000;
delay_fac_ms = RCC_ClocksStatus.HCLK_Frequency / 8000;
}

void delay_us(u32 n)
{
SysTick_SetReload(delay_fac_us * n);
SysTick_CounterCmd(SysTick_Counter_Clear);
SysTick_CounterCmd(SysTick_Counter_Enable);
do
{
Status = SysTick_GetFlagStatus(SysTick_FLAG_COUNT);
}while (Status != SET);
SysTick_CounterCmd(SysTick_Counter_Disable);
}

// 最大值 0xffffff / (HCLK / 8000)
// 主频72M时,n最大值只能是1864
void delay_ms(u16 n)
{
u32 temp = delay_fac_ms * n;

if (temp > 0x00ffffff)
{
temp = 0x00ffffff;
}
SysTick_SetReload(temp);
SysTick_CounterCmd(SysTick_Counter_Clear);
SysTick_CounterCmd(SysTick_Counter_Enable);
do
{
Status = SysTick_GetFlagStatus(SysTick_FLAG_COUNT);
}while (Status != SET);
SysTick_CounterCmd(SysTick_Counter_Disable);
}

void delay_s(u16 n)
{
while (n--)
{
delay_ms(1000);
}
}

转载自:https://www.cnblogs.com/chenlidong/archive/2010/06/28/1766637.html

转载于:https://www.cnblogs.com/will-king0308/p/9243190.html

STM32F10x 使用SysTick的延时函数相关推荐

  1. 【STM32F103】嘀嗒定时器(Systick)_延时函数

    STM32嘀嗒定时器--延时函数 一 系统Systick定时器 Systick定时器就是系统滴答定时器,一个24 位的倒计数定时器,计到0 时,将从RELOAD 寄存器中自动重装载定时初值.只要不把它 ...

  2. STM32延时函数的四种方法:普通延时(2种)、SysTick 定时器延时(2种)

    STM32延时函数的三种方法:普通延时.SysTick 定时器延时(1.中断方式:2.非中断方式) 单片机编程过程中经常用到延时函数,最常用的莫过于微秒级延时delay_us( )和毫秒级delay_ ...

  3. Systick滴答定时器寄存器、delay()延时函数、SysTick_Config函数

    SysTick定时器 SysTick定时器,是一个简单的定时器,对于CM3.CM4内核的芯片都有SysTick定时器.SysTick 是一个 24 位的倒计数定时器,当计数到 0 时,将从RELOAD ...

  4. 关于SYSTICK延时函数的两个小疑问

    我们知道,STM32库函数里通常使用来自内核的系统定时器SYSTICK作为时基,实现计数延时.一般来讲,ST公司提供的库函数里将SYSTICK定时器配置为1ms的定时器中断,每产生1ms中断则相关中断 ...

  5. 嵌入式开发(7)系统定时器(SysTick)之延时函数运用

    目录 一.系统定时器 1. 简介 2.工作原理 3.频率的概念 二.库函数SysTick定时器操作 系统定时器配置 三.寄存器SysTick定时器操作 1.系统定时器的用途 2.寄存器 3.官方示例 ...

  6. 从头开始写STM32F103C8T6驱动库(四)——编写延时函数,详解Systick

    系列文章目录 Github开源地址 从头开始写STM32F103C8T6驱动库(一)--STM32CubeMX创建并调整工程结构 从头开始写STM32F103C8T6驱动库(二)--编写系统初始化程序 ...

  7. STM32CubeMx开发之路—使用SysTick实现微妙延时函数delay_us()

    运行环境 Windows10 STM32CubeMX Version 5.4.0 Keil5(MDK5) Version 5.28.0.0 硬件开发板 F103RB-NUCLEO 简介 本例程主要讲解 ...

  8. 延时函数介绍和呼吸灯的实现

    文章目录 延时函数介绍 呼吸灯原理 杨桃32学习笔记,本文图片文字皆为转述 延时函数介绍 分为delay_s秒,delay_ms毫秒,delay_us微秒延时,最大参数不能超过65535. 呼吸灯原理 ...

  9. 已解决:大家使用原子哥的延时函数delay_ms,delay_us会出现进入延时函数出不来的情况

    首说明先原子哥的延时函数没有问题.原子哥的延时函数有的是用在STM32F103中的,要看自己的开发板是那个类型.这里给出STM32F103和STM32F030的延时函数. (1)用在STM32F030 ...

最新文章

  1. mysql不同实例数据同步_两台Mysql数据库数据同步实现实例
  2. UIControlEvents的几种类型值
  3. 目标检测 最新源码大放送
  4. python读取xml_python解析xml文件
  5. QT源码解析(一) QT创建窗口程序、消息循环和WinMain函数
  6. Dynpro程序抬头信息要求多值输入的解决方法
  7. HDU 5612 Baby Ming and Matrix games
  8. SimpleDateFormat 按照不同要求去改写时间的格式,或者把时间串变成date类型
  9. 个性化联邦学习算法框架发布,赋能AI药物研发
  10. Android中Activity的启动模式和使用场景
  11. 32.卷1(套接字联网API)---IPv4,IPv6,ICMPv4 和 ICMPv6
  12. Javascript:js借助jQuery和fileSave将表格存储到world
  13. 反射方式,获取出集合ArrayList类的class文件对象
  14. linux 终端复用神器-tmux使用梳理
  15. 30分钟学习掌握springmvc、SSM
  16. 四川托普计算机职业学校教务管理系统,四川托普信息技术职业学院教务处
  17. ODAC安装配置与使用详解
  18. 古文一篇本周部分GAN论文(0106-0111)
  19. 相比于深度学习,传统的机器学习算法难道就此没落了吗,还有必要去学习吗?
  20. 【原】iOS开发进阶(唐巧)读书笔记(二)

热门文章

  1. Java如何连接openvas_gas: chinese Gui for openvAS(GAS)
  2. AI将给教育带来巨变,但学校和老师的价值不可替代
  3. 协议处理程序初始化失败_TCP协议、算法和原理
  4. 理解cookie与token(JWT)
  5. 二分查找法---java实现
  6. 计算商品价格找零(Python)
  7. 数据分析思维框架---认知决定差异
  8. Scala入门到精通——第八节 包和引入
  9. 深入理解Spark 2.1 Core (十三):sparkEnv类源码分析
  10. 基于 Flink+Iceberg 构建企业级实时数据湖 | 附 PPT 下载