今天练习了32中的SysTick定时器,通常叫做滴答定时器。定时器的作用,用过51的想必都知道。定时器主要用来处理一些周期性的,时间间隔固定的事件。同时定时器也可以用来得到一个事件所耗费的时间。下面来看一下滴答定时器的配置过程:

  1. 初始化定时器,配置定时进入中断的时间间隔
  2. 如果配置失败,则死循环等待
  3. 配置成功后,先关闭定时器
  4. 在延时函数中使用全局变量记录进入了中断几次,并使能定时器
  5. 书写中断所要执行的代码

下面来看看代码(systick.c):

#include"systick.h"u32 TimeTemp;void SysTick_Init(void)
{if(SysTick_Config(SystemCoreClock/1000)){while(1);}SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;
}void Delay_ms(u32 nTime)
{TimeTemp = nTime;SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;while(TimeTemp != 0);
}void TimeTemp_Decrement()
{if(TimeTemp != 0){TimeTemp--;}
}
SysTick_Config(SystemCoreClock/1000)

初始化定时器进入中断的时间间隔。SystemCoreClock/1000表示1ms进入中断;SystemCoreClock/100000表示1us进入中断。如果配置成功,跳过if判断,执行SysTick->CTRL &= ~SysTick_CTRL_ENABLE_Msk;来关闭定时器。


void Delay_ms(u32 nTime)
{TimeTemp = nTime;SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;while(TimeTemp != 0);
}

该函数提供被使用者所调用的延时函数,传入的参数为延时的时长,单位是毫秒。然后执行SysTick->CTRL |= SysTick_CTRL_ENABLE_Msk;用来使能定时器,使定时器开始工作。最后等待设置的时间,已达到延时的目的。

void TimeTemp_Decrement()
{if(TimeTemp != 0){TimeTemp--;}
}

该函数为在中断中要执行的函数,主要来计数进入中断几次,直到设置的时间结束。

下面来看一下主函数(main.c):

#include"led.h"
#include"usart.h"
#include"systick.h"int main(void)
{GPIO_LED_Config();USART1_Config();SysTick_Init();while(1){printf("Turn on the Light!\r\n");LED(ON);Delay_us(5000);printf("Turn off the Light!\r\n");LED(OFF);Delay_us(5000);}
}void SysTick_Handler(void)
{TimeTemp_Decrement();
}

这个定时器的相对来说是比较简单的,并且它不是外设,它在32的内核之中。比较容易实现简单的定时任务。

STM32----摸石头过河系列(七)相关推荐

  1. 58同城如何摸石头过河?

    本文转自:http://www.huxiu.com/article/4397/1.html 这家典型"鼠标+水泥".不愿复制Cragslist模式的创业公司,摸爬滚打间的经验教训 ...

  2. oCPC实践录 | 摸石头过河,oCPC先跑起来再说

    oCPC才开始的实践基本上是摸着石头过河,不断测试实验.不过也可以参考已有的oCPC产品设计,oCPC首要需要解决的是转化目标和转化数据. 在解决转化数据之前,可以先看一下申探社:深入互联网广告中的出 ...

  3. STM32----摸石头过河系列(一)

    在学习stm32之前,我较为熟练的掌握了51单片机的开发,可以运用51中的输入.输出,以及定时器.中断等.今天第一天,学习stm32点亮LED灯. 在本次学习中使用的是stm32f103RC系列单片机 ...

  4. STM32----摸石头过河系列(八)

    在STM32中定时器(TIM)是很重要的外设,具有相当多的作用,并且用法多样,内容多.今天来分析一下定时器的理论知识,没有实例. 在STM32中定时可以分为三类:基本定时器.通用定时器.高级定时器. ...

  5. STM32----摸石头过河系列(六)

    今天了解一下ADC,stm32中的模数转换利用的是逐次逼近的方法,这个当时在考研时特别熟,现在又忘了,又去问了一下万能的百度.先是多少了解一下这个转换过程,在32的开发过程中用不到,但毕竟从事这个的, ...

  6. STM32----摸石头过河系列(四)

    今天分析STM32一个相当重要的外设--串口,在我使用的这款单片机中有三个串口分别为USART1,USART2,USART3.其中USART1挂载在总线APB2上,USART2,3挂载在APB1上.这 ...

  7. 中台,都他妈被你们说糊涂了,文内才是正宗解释,别摸石头过河了,石头早就有了

    (1)我们先说说技术架构分层 我们按技术架构通常是这样的: 1.UI交互层:Windows UI.PC Web UI.移动App UI.微信小程序UI.摄像头视觉识别人机界面.语音交互人机界面 2.逻 ...

  8. STM32----摸石头过河系列(五)

    今天总结一下DMA(Direct Memory Access,直接存储器存储),在以往我们从串口读取数据到内存的流程是,cpu通过串口读取导数据,然后CPU再将数据写入固定的内存.这种读取方式占用了大 ...

  9. STM32----摸石头过河系列(三)

    前两次了解了LED的打开和关闭,以及按键的检测和按键作为输入的中断.今天来了解一下SysTick系统定时器.玩过51的想必对定时器一定不会陌生.定时器可以让我们隔着固定的时间的去做一些事情,比如让LE ...

最新文章

  1. linux传文件到xp,Linux与Windows XP之间使用FTP互传文件
  2. 二、Asp.Net Core WebAPI——OcelotDemo
  3. 基于IAR-stm32裸板工程,完美移植RT-Thread Nano系统(附源码)
  4. 初探Stage3D(一) 3D渲染基础原理
  5. 处理v-html的潜在XSS风险
  6. python 安装中的错误解决
  7. SOFA RPC 详细介绍
  8. Qt/Embedded开发环境的的搭建(二)
  9. 关于_beginthreadex、_beginthread和CreateThread
  10. 字符串-创建//比较
  11. Rabbit-音乐欣赏
  12. Stick ------ 剪枝神题
  13. html鼠标移上去变成箭头,js实现鼠标移动到div上变成箭头
  14. 人工智能已经沦为刷榜,刷论文的时代了? 新一代人工智能,认知智能已经来临。道翰天琼。
  15. win10商店打不开_win10自带的照片查看器打不开的修复方法
  16. python求和函数详解_python的sum求和函数详解
  17. 阿里云ubuntu源_优麒麟19.04即将发布,华为、阿里云、重大、360四大境像站鼎力支持!...
  18. AndroidWear 连接手持设备与穿戴设备模拟器到开发环境
  19. Python生成词云的制作
  20. SAP ME架构官网文档学习总结

热门文章

  1. 【Java】《基于Java的面向对象范式》学习笔记分享
  2. 【形式语言与自动机】图灵机
  3. Python之函数的参数
  4. VS Code前端开发利器-常用快捷键
  5. 03Linux用户和组及权限
  6. cocos2d-基本概念(4)-CallFunc Action
  7. 买二手房子经济实惠。
  8. GridView去掉边框
  9. 用 Git 操作的数据库?这个项目火了!
  10. 程序员总结的:最没有学习效率的 5 种方法!你在用其中哪一种?