STM32的精确延时

发布者:风清扬yx最新更新时间:2019-06-26 来源: eefocus关键字:STM32  精确延时 手机看文章 扫描二维码
随时随地手机看文章

/*----------------------------------------------------------

文件名称: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的精确延时

上一篇:STM32按键控制灯
下一篇:STM32入门之中断

推荐阅读最新更新时间:2024-11-12 22:05

STM32串口使用方法
串口接收函数
[单片机]
<font color='red'>STM32</font>串口使用方法
STM32 内存分布探究
本人在运行ucos时遇到一个非常奇怪的问题,运行一段时间后就会莫名进入hardfault函数,导致系统死机。后来根据对堆栈调试,发现每次调用的函数都不一样,甚是费解。通过map文件最后得出结论,原来在系统初始化的时候在flash里面读出了系统配置参数,在系统运行过程中会写flash,而flash定义的地址与程序代码存储的位置发生了重叠,一写数据就擦掉了一些函数,当调用到这些函数的时候就会发生未知指令的错误。把这个参数存储地址定义的分开些就会解决这个问题。可是,开始这个地址写好了,随着程序代码不断增多,消耗的片上flash也会增大,是个动态增长的过程,不注意很有可能发生冲突。所以在项目开发过程中定期检查定义的参数存储地址,或者干脆把
[单片机]
STM32中的GPIO_Init()函数的分析
学习STM32时,首先要熟悉流水灯例程,在这里就来分析流水灯中的GPIO_Init()函数 例如:流水灯例程中使用的端口是macLED1_GPIO_PORT=GPIOB, 控制的引脚是GPIO_Pin_0, 引脚的模式是 GPIO_Mode_Out_PP(通用推挽输出), 引脚的速率是GPIO_Speed_50MHz, 用到的寄存器是CRL 将上述的引脚、模式、速率换算成32位的16进制,分别是: 1) 控制的引脚是GPIO_Pin_0 换算成32位的16进制是:0x0000 0001 2) 引脚的模式是 GPIO_Mode_Out_PP(通用推挽输出) 换算成32位的16进制是:0x00
[单片机]
<font color='red'>STM32</font>中的GPIO_Init()函数的分析
STM32硬件复位时间
两个参数,,1低电平时间 2低电平压值 1.stm32复位时间 ------ 低电平时间:1.5 至 4.5 ms 2.压值
[单片机]
<font color='red'>STM32</font>硬件复位时间
STM32 定时器计数器 更新事件
向上计数模式 在向上计数模式中,计数器从0计数到自动加载值(TIMx_ARR计数器的内容),然后重新从0开始计数并且产生一个计数器溢出事件。 如果使用了重复计数器功能,在向上计数达到设置的重复计数次数(TIMx_RCR)时,产生更新事件(UEV);否则每次计数器溢出时才产生更新事件。 这样很容易误解 应该是否则每次计数器溢出时都产生更新事件,即不使用重复重复计数功能每次溢出都产生更新事件。 产生更新事件方式 1.设置了TIMx_CR1寄存器中的URS位(选择更新请求),在TIMx_EGR寄存器中(通过软件方式或者使用从模式控制器)设置UG位将产生一个更新事件UEV,但硬件不设置UIF标志(即不产生中断或DMA请求)
[单片机]
SPI(STM32
SPI 是英语S erial Peripheral interface的缩写,是串行外围设备接口。是Motorola(摩托罗拉)首先在其MC68HCXX系列处理器上定义的。 SPI是一种高速的,全双工,同步的通信总线 Standard SPI, Dual SPI, Quad SPI Standard SPI: 标准SPI通常就称SPI,它是一种串行外设接口规范 CLK, /CS, DI, DO, /WP, /Hold 全双工模式,输入和输出可以同时进行(mosi,miso分别对应的是DI和DO) Dual SPI: CLK, /CS, IO0, IO1, /WP, /Hold 半双工模式,mosi和miso对应
[单片机]
STM32单片机实现Bootloader跳转的关键步骤
本期话题: 现在越来越多的嵌入式设备支持远程自动升级,不需要再借助下载器。这样对于设备的维护非常方便。 当然若使设备支持远程升级,需要编写支持升级的程序代码,可以称之为 BootLoader。 也就是说,将设备的程序代码分为两部分:BootLoader 和 APP。 BootLoader 负责升级 APP 以及引导APP运行。APP 负责实现设备的业务处理功能,也就是设备的核心功能代码。 对于Cortex-M 系列的单片机来说,若要实现 BootLoader 安全跳转到 APP,需要进行一些配置。 本文就以 STM32 单片机为例,来聊一聊实现 BootLoader 跳转的关键配置步骤。 聊一聊: 在程序开发设计阶段,要根据具
[单片机]
<font color='red'>STM32</font>单片机实现Bootloader跳转的关键步骤
STM32之一 建立工程及led闪烁
摸索了好久,今天终于实现了自己的工程模板,首先看下我的工程结构: 我的工程文件夹建立了五个文件夹,CMSIS、Libraries、Project、Startup、USER。里面分别存放了各自的初始文件, 关于MDK中的工程树情况如上图,分别在各自的文件夹下存放各自的文件,我们采用的是模块化编程,例如编写led程序就建立led.h和led.c文件,添加至工程,另外建立了延时函数文件,即delay.c和delay.h文件,而且这文件以后都可以用在其他工程中,led灯闪烁即led.c中, 首先要建立GPIO对象,然后首先要进行时钟使能,然后对GPIO进行初始化,下面来看led.h文件: 关键是中间的两个宏定义,定义ledon代表了
[单片机]
<font color='red'>STM32</font>之一 建立工程及led闪烁
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved