定时器控制LED周期性闪烁并串口输出hello windows

本文介绍了如何使用STM32的定时器控制LED周期性闪烁及串口输出hello windows。首先,文章讲解了定时器的实质、作用和原理,接着详细描述了创建工程、配置定时器、中断以及代码修改的过程,最后总结了实验中的注意事项和可能出现的问题。
摘要由CSDN通过智能技术生成

前言

之前的实验中,延时功能都是通过循环、delay/Hal_delay函数等实现的。本次将通过定时器的方式实现时间的精准控制,相当于给CPU上了一个闹钟,CPU平时处理其它任务,当定时时间到了以后,处理定时相关的任务。

一、定时器介绍

1、定时器的实质

定时器是SoC的常见外设,本质上是一个后台进程,它会调度执行所有加入到Timer中的task。所有加入到Timer中的task可以只被调度执行一次,也可以每隔一定的时间间隔重复的被Timer调度执行。
(1)定时器和计数器。计数器是用来计数的(每隔一个固定时间会计一个数);因为计数器的计数时间周期是固定的,因此到了一定时间只要用计数值x计数时间周期,就可以得到一个时间段,这个时间段就是我们定的时间(这就是定时器)。
(2)定时器/计数器作为SoC的外设,主要用来实现定时执行代码的功能。定时器相对于SoC来说,就好象闹钟相对于人来说意义一样。

2、定时器的作用

(1)定时器可以让SoC在执行主程序的同时,具有计时功能(通过定时器),到了一定时间(计时结束)后,定时器会产生中断提醒CPU,CPU会去处理中断并执行定时器中断的ISR。从而去执行预先设定好的事件。

(2)定时器就好象是CPU的一个秘书一样,这个秘书专门管帮CPU来计时,并到时间后提醒CPU要做某件事情。所以CPU有了定时器之后,只需预先把自己xx时间之后必须要做的事情绑定到定时器中断ISR即可,到了时间之后定时器就会以中断的方式提醒CPU来处理这个事情。

3、定时器的原理

(1)定时器计时其实是通过计数来实现的。 定时器内部有一个计数器,这个计数器根据一个时钟(这个时钟源来自于ARM的APB总线 66MHz,然后经过时钟模块内部的分频器来分频得到)来工作。每隔一个时钟周期,计数器就计数一次,定时器的时间就是计数器计数值×时钟周期。

(2)定时器内部有1个寄存器TCNT,计时开始时我们会把一个总的计数值(初值)放入TCNT寄存器中,然后每隔一个时钟周期(假设为1ms)TCNT中的值会自动减1(硬件自动完成,不需要CPU软件去干预),直到TCNT中减为0的时候,TCNT就会触发定时器中断。

(3)定时时间是由2个东西共同决定的:一个是TCNT中的计数值,一个是时钟周期,两者的乘积即为最终定时的时间。

二、定时器控制LED闪烁和串口输出

1、创建工程

先打开STM32CubeMX软件新建工程,进行基本配置。通过点击“ACCESS TO MCU SELECTOR”来创建一个新的工程:
在这里插入图片描述
芯片根据自己的实际情况进行选择,此处选择“STM32F103C8”
在这里插入图片描述

打开外部时钟,点击“System Core”,选择RCC,在HSE选项中选择“Crystal/Ceramic Resonator”。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值