STM32 利用systick 精确延时 nms

发布者:数字梦想最新更新时间:2016-10-18 来源: eefocus关键字:STM32  systick  精确延时 手机看文章 扫描二维码
随时随地手机看文章
/*****************************************************************************

* File Name          : systick_delay.h
* Author             : shifu
* Version            : 
* Date               : 09/20/2008
* Description        : 
********************************************************************************/
/* Define to prevent recursive inclusion -------------------------------------*/
#ifndef __SYSTICK_DELAY_H
#define __SYSTICK_DELAY_H

/* Includes ------------------------------------------------------------------*/
#include "stm32f10x_systick.h"

/* SysTick clock countflag bit */
#define SysTick_CountFlag_Bit (u32)0x00010000

/* SysTick flag */
#define Count_Not_Arrived    (u32)0x0
#define Count_Arrived        (u32)0x00010000

/* CTRL TICKINT Mask */
#define CTRL_TICKINT_Enable   ((u32)0x00000002)
#define CTRL_TICKINT_Disable ((u32)0xFFFFFFFD)


/* Exported functions ------------------------------------------------------- */
void ST_Delay_Ms(u16 ms);

#endif

//***************************************************************************
// Function Name : systick_delay.c
// Description    : delay x ms 必须在AHB 设置以后使用
// Input           : ms
// Output         : None
// Return         : None
//***************************************************************************

#include"systick_delay.h"

void ST_Delay_Ms(u16 ms)
{
u32 statusreg = Count_Not_Arrived;

   //检查参数是否超过最大值0xffffff/9000=1864,在AHB 72MHz时 最长时间0xffffff/9000
if(ms > 1864) ms = 1864;

//不产生异常中断请求
SysTick->CTRL &= CTRL_TICKINT_Disable;

//时钟选择 HCLK/8
SysTick->CTRL &= SysTick_CLKSource_HCLK_Div8;

//装入计数值
SysTick->LOAD = (u32)(ms * 9000);

//开始计数
SysTick->CTRL |= SysTick_Counter_Enable;

//检查标志位,等待延迟
while((statusreg & SysTick_CountFlag_Bit) == Count_Not_Arrived)
{
    statusreg = SysTick->CTRL;
}

//停止计数
SysTick->CTRL &= SysTick_Counter_Disable;

//清除计数
SysTick->VAL = SysTick_Counter_Clear; 
}//END

关键字:STM32  systick  精确延时 引用地址:STM32 利用systick 精确延时 nms

上一篇:STM32 外部中断配置
下一篇:STM32通用定时器的基本定时器功能实现灯闪烁

推荐阅读最新更新时间:2024-03-16 15:15

STM32串口通信基本原理
介绍串口通信 按照数据传送方向分类 单工 :数据传输只支持数据在一个方向上传输 半双工 :允许数据在两个方向上传输。但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;它不需要独立的接收端和发送端,两者可以合并一起使用一个端口 全双工 :允许数据同时在两个方向上传输。因此,全双工通信是两个单工通信方式的结合,需要独立的接收端和发送端 分别如下图中的a、b、c所示。 按照通信方式分类 同步通信:带时钟同步信号传输。比如:SPI,IIC通信接口 异步通信:不带时钟同步信号。比如:UART(通用异步收发器),单总线 在同步通讯中,收发设备上方会使用一根信号线传输信号,在时钟信号的驱动下双方进
[单片机]
STM32 ST-LINK Utility介绍、下载、安装、使用方法
Ⅰ、写在前面 本文讲述的内容是STM32 ST-LINK Utility介绍、下载、安装、使用方法,如需要了解更多关于STM32相关的文章,可以到我博客,或微信公众号查看并下载。 STM32 ST-LINK Utility这个软件工具其实主要就是配套“ST-LINK”这个下载工具一起使用的上位机软件。因此使用STM32 ST-LINK Utility上位机软件需要有一个ST-LINK工具才行。它的功能和J-Link对应的工具类似,用于烧写代码。 STM32 ST-LINK Utility工具在产品开发过程中测试一些其他版本的代码,可以直接下载hex,而不用打开工程再编译去下载。 当你开发完一个STM32产品,需要量产的
[单片机]
<font color='red'>STM32</font> ST-LINK Utility介绍、下载、安装、使用方法
理解stm32开漏输出与推挽输出
每次看到stm32的教程,都是让点led灯,对GPIO觉着很是简单。 后来者麦知club的小车机器人项目中,屡屡碰壁,是寸步难行,读ds18b20要拉底,拉高;写Oled屏要片选,要命令。 在百度里查来查去,大都模样差不多。 今天,动手在stm32l152c的discovery板上,简单的几行代码,配合万用表,终于一解迷惑。 依旧是要cubemx配置外设和时钟,while循环里代码如下: /* USER CODE BEGIN 3 */ if(HAL_GPIO_ReadPin(GPIOA, GPIO_PIN_0) == GPIO_PIN_SET) index = ~index; HAL_G
[单片机]
STM32怎么创建工程:如何创建第一个工程模板(基于固件库)
一、 首先在电脑的某个目录下创建一个空文件夹用来存放工程文件。创建好后在该文件目录下分别创建CORE 、FWLIB、OBJ、SYSTEM、USER等五个子文件夹。至于这些文件夹名字,实际上是可以任取的,我们这样取名只是为了行业规范。 二、打开keil软件,点击 Keil 的菜单: Project – New Uvision Project,保存时将目录定位到自己创建的文件下的USER子目录下: 三、接下来会出现一个选择 Device 的界面,就是选择我们的芯片型号,我们选择STM232F407ZE(如果使用的是其他系列的芯片,选择相应的型号就可以了)特别注意: 一定要安装对应的器件支持包才会显示这些内容)。 这里
[单片机]
<font color='red'>STM32</font>怎么创建工程:如何创建第一个工程模板(基于固件库)
STM32 DHT11串口打印源程序
1.硬件准备: USB转TTL工具一个 核心板STM32F103C8T6 DHT11传感器 2.软件准备: 串口调试助手 2.硬件连线 USB转TTL的RX----32板子上的PA9 USB转TTL的TX----32板子上的PA10 DHT11的DAT连接PB14 3.程序源码 #include dht11.h ////////////////////////////////////////////////////////////////////////////////// #include delay.h //////////////////////////////////////////////////////
[单片机]
<font color='red'>STM32</font> DHT11串口打印源程序
STM32系列修改外部晶振以及代码的修改
刚刚接触STM32的时候,用的都是8M晶振。比如你想更换到为外部晶振为12M,但是主频仍想用72M的。该如何设置?或者想倍频到更高的主频该怎么修改? 例子就直接直接拿 正点原子 的例子吧! 属性 原来 现在 外部晶振 8M 12M 倍频 9 6 主频 72M 72M 想从原来的8M修改到现在的12M,但是主频仍为72M,该如何修改: (1)【设置外部晶振】打开stm32f10x.h,找到下图部分: 修改之前如上图一样,HSE_VALUE为外部晶振,如果你用的是f103的芯片,则修改下边这个为12M; (2)【设置主频】打开system_stm32f10x.c,找到下图部分: 也可以根据自己的需要修改为56M
[单片机]
STM32 ADC的规则通道和注入通道有什么区别
简介:STM32的每个ADC模块通过内部的模拟多路开关,可以切换到不同的输入通道并进行转换。STM32特别地加入了多种成组转换的模式,可以由程序设置好之后,对多个模拟通道自动地进行逐个地采样转换。 有2种划分转换组的方式:规则通道组和注入通道组。通常规则通道组中可以安排最多16个通道,而注入通道组可以安排最多4个通道。 在执行规则通道组扫描转换时,如有例外处理则可启用注入通道组的转换。 一个不太恰当的比喻是:规则通道组的转换好比是程序的正常执行,而注入通道组的转换则好比是程序正常执行之外的一个中断处理程序。 再举一个不一定使用的例子: 假如你在家里的院子内放了5个温度探头,室内放了3个温度探头;你需要时刻监视室
[单片机]
STM32开发者社区:从这里开启你的STM32之旅!小白和PRO都友好
当面对STM32Cube生态系统这样一个庞大而丰富的开发世界时,工程师难免会产生疑问,从哪里开始才好? ST的许多合作伙伴和客户都希望有更多的产品能够利用STM32Cube开发环境。开发人员很享受开发环境的图形用户界面和工具的易用性,如STM32CubeMX、免费的STM32CubeIDE以及许多软件包、驱动程序和中间件,这些都有助于更快地将产品推向市场。随着越来越多的企业选择ST的产品,越来越多的工程师在ST的生态系统中迈出了第一步。为了降低开发人员的进入门槛,ST推出了STM32开发者社区。开发者社区如何为开发团队提供帮助,ST如何将STM32生态系统整合在一起?让我们详细聊聊。 STM32开发者社区 为开
[单片机]
<font color='red'>STM32</font>开发者社区:从这里开启你的<font color='red'>STM32</font>之旅!小白和PRO都友好
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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