1. /*----------------------------------------------------------
  2. 文件名:systick.c
  3. 文件描写叙述:sysTick 系统滴答时钟1us中断函数库。中断时间可自由配置
  4. 备注:程序默认使用72M时钟,无分频
  5. -----------------------------------------------------------------*/
  6. #include "delay.h"
  7. static __IO u32 TimingDelay;
  8. /*-----------------------------------------------------------------------
  9. 程序名称:systick Init
  10. 程序描写叙述:启动系统滴答定时器 systick
  11. 输入參数:无
  12. 返回參数:无
  13. 备注: 使用此功能之前须要调用此函数。初始化寄存器等參数
  14. ----------------------------------------------------------*/
  15. void SysTick_Init(void)
  16. {
  17. //SystemFrequency /1000 1ms中断一次
  18. //SystemFrequency /100000 10us中断一次
  19. //SystemFrequency /1000000 1us中断一次
  20. if(SysTick_Config(SystemCoreClock /1000000)) //1us
  21. {
  22. /*Caputure error*/
  23. while(1);
  24. }
  25. }
  26.  
  27. /*---------------------------------------------
  28. 程序名称:Delay_us
  29. 程序描写叙述:延时nTime us
  30. 输入參数:nTime
  31. 返回參数:无
  32. 备注: 无
  33. -----------------------------------------------*/
  34. void Delay_us(__IO u32 nTime)
  35. {
  36. TimingDelay = nTime;
  37. while(TimingDelay != 0);
  38. }
  39.  
  40. /*--------------------------------------------------
  41. 程序名称:TimingDelay_Decrement
  42. 程序描写叙述:数字递减到0
  43. 输入參数:无
  44. 返回參数:无
  45. 备注: 须要中断函数SysTick_Handle()中调用
  46. ---------------------------------------------------------*/
  47. void TimingDelay_Decrement(void)
  48. {
  49. if(TimingDelay != 0x00)
  50. {
  51. TimingDelay--;
  52. }
  53. }
  1. 在学习的时候发现,延时是错误的,由于这里的要是要依赖于系统的时钟所以在中断函数中要增加
  1. <pre name="code" class="cpp">SysTick_Handle()
  1.  
  1. /**
  2.   * @brief  This function handles SysTick Handler.
  3.   * @param  None
  4.   * @retval None
  5.   */
  6. void SysTick_Handler(void)
  7. {
  8. <span style="white-space:pre"> </span>TimingDelay_Decrement();
  9. }

STM32的精确延时的更多相关文章

  1. 【转】STM32 不占用定时器(包括SysTick)实现精确延时(巧用DWT)

    /** ****************************************************************** * file core_delay.c * author ...

  2. 一种Cortex-M内核中的精确延时方法

    本文介绍一种Cortex-M内核中的精确延时方法 前言 为什么要学习这种延时的方法? 很多时候我们跑操作系统,就一般会占用一个硬件定时器--SysTick,而我们一般操作系统的时钟节拍一般是设置100 ...

  3. STC12C5A60S2 @ 22.0184Mhz 精确延时

    #include "STC12.h" // STC12C5A60S2 @ 22.0184Mhz 精确延时 void delay_10us(unsigned char n) { un ...

  4. 对MSP430单片机__delay_cycles精确延时的说明及改正

    在这里, 我来讨论一下关于MSP430单片机使用__delay_cycles延时的问题. IAR for MSP430编译器提供了一个编译器内联的精确延时函数(并非真正的函数)以提供用户精确延时使用, ...

  5. Keil C51程序设计中几种精确延时方法

    1 使用定时器/计数器实现精确延时 单片机系统一般常选用11.059 2 MHz.12 MHz或6 MHz晶振.第一种更容易产生各种标准的波特率,后两种的一个机器周期分别为1 μs和2 μs,便于精确 ...

  6. [MSP430] 对MSP430单片机__delay_cycles精确延时的说明及改正

    在这里, 我来讨论一下关于MSP430单片机使用__delay_cycles延时的问题. IAR for MSP430编译器提供了一个编译器内联的精确延时函数(并非真正的 函数)以提供用户精确延时使用 ...

  7. 关于51精确延时及keil仿真延时时间

    转自:http://blog.sina.com.cn/s/blog_980e19e00101b5dh.html 有时候需要精确的延时,比如18B20温度传感器对时序要求非常严格,必须精确到微秒级别 一 ...

  8. 实现流水灯以间隔500ms的时间闪烁(系统定时器SysTick实现的精确延时)

    /** ****************************************************************************** * @file main.c * ...

  9. 使用系统定时器SysTick实现精确延时微秒和毫秒函数

    SysTick定时器简介 SysTick定时器是存在于系统内核的一个滴答定时器,只要是ARM Cortex-M0/M3/M4/M7内核的MCU都包含这个定时器,它是一个24位的递减定时器,当计数到 0 ...

随机推荐

  1. 记录一个scrapy的坑

    在win10上用命令 pip install scrapy 安装scrapy的时候提示: Could not find a version that satisfies the requirement ...

  2. 【Mysql数据库】知识点总结

    本文转载自:http://www.cnblogs.com/tonghun/p/7191131.html 一 数据库常用操作 mysql -u+username -p+password:登陆数据库管理系 ...

  3. 条款13:以对象管理资源(use objects to manage resources)

    NOTE: 1.为防止资源泄漏,请使用RAII对象,它们在构造函数中获得资源并在析构函数中释放资源. 2.两个常被使用的RAII classes 分别是 trl::shared_ptr 和 auto_ ...

  4. 分享下自己的EmpireofCode进攻策略 https://empireofcode.com/ https://empireofcode.com/game/#

    # 没什么用,该游戏的模块调用不友好,取数据难import queue from battle import commander # import math unit_client = command ...

  5. Crossed Ladders 求街道宽度 (二分法)

    Description A narrow street is lined with tall buildings. An x foot long ladder is rested at the bas ...

  6. Github 多账号配置

    1. 不同账户,生成不同密钥ssh-keygen -t rsa -f github1 -C "xxx@163.com"ssh-keygen -t rsa -f github2 -C ...

  7. luogu1494 [国家集训队]小Z的袜子

    #include <algorithm> #include <iostream> #include <cstdio> #include <cmath> ...

  8. 在WinForm里嵌入WPF模拟公交运行状态

    公司有个公交项目,模拟公交运行的时候使用的纯WinForm技术,5秒钟刷新一次,不仅看起来感觉很丑,而且性能上很有问题,听说一段时间后就会因为内存问题崩溃(估计是没释放非托管资源吧,不断重绘,非托管资 ...

  9. 大数据学习——关于hive中的各种join

    准备数据 2,b 3,c 4,d 7,y 8,u 2,bb 3,cc 7,yy 9,pp 建表: create table a(id int,name string) row format delim ...

  10. 【收藏】实战Nginx与PHP(FastCGI)的安装、配置与优化

    拜读南非蚂蚁大牛的文章真是有所收获 http://ixdba.blog.51cto.com/2895551/806622 一.什么是 FastCGI FastCGI是一个可伸缩地.高速地在HTTP s ...