前言

  关于定时器大家都应该不会陌生,因为处理器都有这个功能。今天总结的F0系列芯片的定时器根据芯片型号不同,数量也不同。定时器分类:基本定时器、通用定时器和高级定时器。计数位数也有不同,有16位的,有32位的。当然,有的芯片功能强大一点,上面功能都有。有的功能很简单,32位,基本定时器这些都没有。所以,根据自己项目需求原则合适型号的芯片很重要。

今天总结的工程是“TIM基础延时”,也就是基本定时器TIM6的延时功能,主要是针对基本定时器来总结。这里有点需要注意的就是F0系列的芯片有些小容量(FLASH)的芯片没有TIM6基本定时器(如:F030、F070小容量芯片)。因此,在使用今天提供的软件工程时一定要注意这一点,否则程序会有问题。不过,如果你使用的芯片没有基本定时器,那也没关系,基本定时器是最基本的,还有通用定时器和高级定时器,这些定时器包含了基本定时器的功能(通用、高级定时器后期我会总结)。

今天会对基本定时器(TIM6)的计数原理延时计数的方法来总结基本定时器的延时功能。

本着免费分享的原则,如果你觉得分享内容对你有用,请关注微信公众号“EmbeddDeveloper”还有更多精彩内容等着你。

下载

ST标准外设库和参考手册、数据手册等都可以在ST官网下载,你也可以到我的360云盘下载。关于F0系列芯片的参考手册有多个版本(针对F0不同芯片),但有一个通用版本,就是“STM32F0x128参考手册V8(英文)2015-07”建议参考该手册,以后如果你换用一种型号芯片也方便了解。

今天的软件工程下载地址(360云盘):

https://yunpan.cn/cSnTMev59yXmU  访问密码 f9ff

STM32F0xx的资料可以在我360云盘下载:

https://yunpan.cn/cS2PVuHn6X2Bj  访问密码 8c37

准备工作

在昨天的软件工程基础上,新建源程序文件(timer.c 和 timer.h),在工程中添加新建的源程序文件timer.c和使用到标准外设库stm32f0xx_tim.c。如何在工程中添加源文件请看以前的文章“STM32F0_新建软件工程详细过程”,添加完成如下图:

注意:

文件所在位置最好对应目录,方便管理。比如:timer.c放在bsp文件下,添加在工程中Bsp组下面。

计数原理

TIM基础定时器的内部框架结构比较简单,就是通过计数,计满之后相应一个事件,如下图。图中标记的数值就是我提供飞软件工程中配置的值,分频之后1秒计数1M个脉冲,需要计满10个脉冲,也就是需要10us是时间。所以,我提供函数接口基准的延时10us(详情请看源程序代码)。

配置过程详情

①RCC时钟

该函数位于bsp.c文件下面;

我个人习惯第一步配置时钟,ST官方提供的例程也是把配置时钟放在前面。关于RCC时钟的配置比较重要,有好几次我就是由于没有配置相应RCC时钟,让我找了很久的问题,最后才发现是RCC时钟没有配置。

注意:

外设时钟不要随便添加,比如:RCC_APB1外设不要配置在RCC_APB2时钟里面【如:RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);这样能编译过,但是错误的

②TIM6的配置

该函数位于timer.c文件下面;

这里就是对TIM6的配置(分频、重载值)。

注意:

至于上面的数值为什么减1,原因很简单(计数从0开始,到上一个值就需要减1)。

③TIM6延时10us

该函数位于timer.c文件下面;

这里的“等待10us延时到”,就是上面我讲解原理中的“计数满10个”响应事件。

说明

STM32F0的芯片软件兼容性很好,可以适用于F0其他很多型号的芯片(具体请看手册、或者亲自测试)。

今天的工程是基于昨天的工程“STM32F0xx_USART收发配置详细过程”修改而来,以上实例总结仅供参考,若有不对之处,敬请谅解。

最后

如果你喜欢我分享的内容,你又想了解更多相关内容,请关注文章开头的微信公众号,新内容持续更新中,后期将会有更多精彩内容出现。

阅读原文

转载于:https://www.cnblogs.com/strongerHuang/p/5541489.html

STM32F0xx_TIM基本延时配置详细过程相关推荐

  1. STM32F0xx_TIM输出PWM配置详细过程

    前言 前面我说过STM32的定时器功能很强大,今天就来总结一下它的另外一个"强大"功能:TIM的比较输出功能,输出可调PWM波形.直接调用函数接口"TIM2_CH1_PW ...

  2. STM32F0xx_TIM输入捕获(计算频率)配置详细过程

    推荐 分享一个大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!http://www.captainbed.net/strongerhuang 我的网站:h ...

  3. STM32F0xx_EXIT中断配置详细过程

    Ⅰ.概述 EXIT外部中断在使用到按键或者开关控制等应用中比较常见,低功耗中断唤醒也是很常见的一种.因此,EXIT在实际项目开发中也是比较常见的一种. STM32F0中外部中断EXIT属于中断和事件的 ...

  4. STM32F0xx_SPI读写(Flash)配置详细过程

    Ⅰ.概述 关于SPI(Serial Peripheral Interface)串行外设接口可以说是单片机或者嵌入式软件开发人员必须掌握的一项通信方式,就是你在面试相关工作的时候都可能会问及这个问题.在 ...

  5. STM32F0xx_ADC采集电压配置详细过程

    前言 关于ADC这一块的功能基本上也算是CortexM芯片的标配了.ST的每一块芯片都有这个功能,只是说因型号不同,通道数.位数等有所不同.STM8的芯片大多数都是10的,也就是说分辨率可达到:参考电 ...

  6. STM32F0xx_FLASH编程(片内)配置详细过程

    Ⅰ.概述 关于数据的储存,我觉得编程的人基本上都会使用到,只是看你储存在哪里.STM32的芯片内部FLASH都是可以进行编程的,也就是说可以拿来储存数据.但是,很多做一些小应用程序开发的人都没有利用好 ...

  7. STM32F0xx_PWR低功耗配置详细过程

    Ⅰ.概述 今天总结PWR部分知识,请看"STM32F0x128参考手册V8"第六章.提供的软件工程是关于电源管理中的停机模式,工程比较常见,但也是比较简单的一个实例,根据项目的不同 ...

  8. STM32F0xx_RTC实时时钟配置详细过程

    推荐 分享一个大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到人工智能的队伍中来!http://www.captainbed.net/strongerhuang Ⅰ.概述 今 ...

  9. STM32F0xx_看门狗(独立+窗口)配置详细过程

    Ⅰ.概述 对于看门狗,我觉得做单片机或者嵌入式开发的人员来说并不陌生,今天总结STM32F0看门狗的功能,F0的看门狗有两种:独立和窗口看门狗. 今天提供两种看门狗的软件工程实例,供大家下载. 两种看 ...

  10. SQLyog安装配置详细过程

    SQLyog安装配置详细过程 一.小啊呜资源分享 二.SQLyog安装配置过程 叮嘟!这里是小啊呜的学习课程资料整理.好记性不如烂笔头,今天也是努力进步的一天.一起加油进阶吧! 一.小啊呜资源分享 免 ...

最新文章

  1. Ubuntu16.04下安装mysql5.7数据库
  2. 简明python教程在线-Python简明教程
  3. 在VIM里面设置自动补全功能
  4. 攻击防御实例——SQL注入
  5. LATEX采坑+Win10字体采坑
  6. Profinet IO设备
  7. 远程访问SOAP协议接口
  8. oracle普通索引改唯一索引,Oracle唯一索引功能替代
  9. mib浏览器_大众汽车的第二代MIB信息娱乐系统图解
  10. java.awt.eventdispatchthread_大神们,小弟来了!解决办法
  11. CVPR2014 tracking
  12. 线性方程组——Jacobi迭代和G_S迭代
  13. python 使用twilio免费发送短信
  14. C语言_统计单词长度
  15. 华为云配置https访问
  16. 信创铺路,数据库格局颠覆的时刻到了
  17. 小程序源码提取工具_小程序一款高效的视频声音提取和识别工具!
  18. tems测试软件统计指标,TEMS指标统计讲解.doc
  19. Linux shell脚本实现归档文件
  20. react-intl-universal实现中英文语言切换(国际化)

热门文章

  1. 如何修复 AirPods 无法连接到 Mac?
  2. Mac 屏幕可不可以用酒精清洁?正确清洁 Mac 的方法
  3. 最好用的终端模拟器ZOC for Mac 8.04
  4. Fusion Studio 17 for Mac(视频后期特效合成软件)
  5. WebToLayers如何将网页转换为PSD文档?
  6. HandBrake for Mac功能界面详解
  7. 你以为海淘产品能逃过海关法眼?大数据技术一网打尽
  8. 麻烦缠身的高通“向前看”:关注服务器市场和5G
  9. 6、PXE安装ESXI6.0
  10. mysql报错:You must at least set –server-id to enable either a master or a slave