STM32F10x 使用SysTick的延时函数
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的延时函数相关推荐
- 【STM32F103】嘀嗒定时器(Systick)_延时函数
STM32嘀嗒定时器--延时函数 一 系统Systick定时器 Systick定时器就是系统滴答定时器,一个24 位的倒计数定时器,计到0 时,将从RELOAD 寄存器中自动重装载定时初值.只要不把它 ...
- STM32延时函数的四种方法:普通延时(2种)、SysTick 定时器延时(2种)
STM32延时函数的三种方法:普通延时.SysTick 定时器延时(1.中断方式:2.非中断方式) 单片机编程过程中经常用到延时函数,最常用的莫过于微秒级延时delay_us( )和毫秒级delay_ ...
- Systick滴答定时器寄存器、delay()延时函数、SysTick_Config函数
SysTick定时器 SysTick定时器,是一个简单的定时器,对于CM3.CM4内核的芯片都有SysTick定时器.SysTick 是一个 24 位的倒计数定时器,当计数到 0 时,将从RELOAD ...
- 关于SYSTICK延时函数的两个小疑问
我们知道,STM32库函数里通常使用来自内核的系统定时器SYSTICK作为时基,实现计数延时.一般来讲,ST公司提供的库函数里将SYSTICK定时器配置为1ms的定时器中断,每产生1ms中断则相关中断 ...
- 嵌入式开发(7)系统定时器(SysTick)之延时函数运用
目录 一.系统定时器 1. 简介 2.工作原理 3.频率的概念 二.库函数SysTick定时器操作 系统定时器配置 三.寄存器SysTick定时器操作 1.系统定时器的用途 2.寄存器 3.官方示例 ...
- 从头开始写STM32F103C8T6驱动库(四)——编写延时函数,详解Systick
系列文章目录 Github开源地址 从头开始写STM32F103C8T6驱动库(一)--STM32CubeMX创建并调整工程结构 从头开始写STM32F103C8T6驱动库(二)--编写系统初始化程序 ...
- STM32CubeMx开发之路—使用SysTick实现微妙延时函数delay_us()
运行环境 Windows10 STM32CubeMX Version 5.4.0 Keil5(MDK5) Version 5.28.0.0 硬件开发板 F103RB-NUCLEO 简介 本例程主要讲解 ...
- 延时函数介绍和呼吸灯的实现
文章目录 延时函数介绍 呼吸灯原理 杨桃32学习笔记,本文图片文字皆为转述 延时函数介绍 分为delay_s秒,delay_ms毫秒,delay_us微秒延时,最大参数不能超过65535. 呼吸灯原理 ...
- 已解决:大家使用原子哥的延时函数delay_ms,delay_us会出现进入延时函数出不来的情况
首说明先原子哥的延时函数没有问题.原子哥的延时函数有的是用在STM32F103中的,要看自己的开发板是那个类型.这里给出STM32F103和STM32F030的延时函数. (1)用在STM32F030 ...
最新文章
- mysql不同实例数据同步_两台Mysql数据库数据同步实现实例
- UIControlEvents的几种类型值
- 目标检测 最新源码大放送
- python读取xml_python解析xml文件
- QT源码解析(一) QT创建窗口程序、消息循环和WinMain函数
- Dynpro程序抬头信息要求多值输入的解决方法
- HDU 5612 Baby Ming and Matrix games
- SimpleDateFormat 按照不同要求去改写时间的格式,或者把时间串变成date类型
- 个性化联邦学习算法框架发布,赋能AI药物研发
- Android中Activity的启动模式和使用场景
- 32.卷1(套接字联网API)---IPv4,IPv6,ICMPv4 和 ICMPv6
- Javascript:js借助jQuery和fileSave将表格存储到world
- 反射方式,获取出集合ArrayList类的class文件对象
- linux 终端复用神器-tmux使用梳理
- 30分钟学习掌握springmvc、SSM
- 四川托普计算机职业学校教务管理系统,四川托普信息技术职业学院教务处
- ODAC安装配置与使用详解
- 古文一篇本周部分GAN论文(0106-0111)
- 相比于深度学习,传统的机器学习算法难道就此没落了吗,还有必要去学习吗?
- 【原】iOS开发进阶(唐巧)读书笔记(二)
热门文章
- Java如何连接openvas_gas: chinese Gui for openvAS(GAS)
- AI将给教育带来巨变,但学校和老师的价值不可替代
- 协议处理程序初始化失败_TCP协议、算法和原理
- 理解cookie与token(JWT)
- 二分查找法---java实现
- 计算商品价格找零(Python)
- 数据分析思维框架---认知决定差异
- Scala入门到精通——第八节 包和引入
- 深入理解Spark 2.1 Core (十三):sparkEnv类源码分析
- 基于 Flink+Iceberg 构建企业级实时数据湖 | 附 PPT 下载