IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> STM32CubeMX+Keil+Proteus仿真定时器中断控制LED灯 -> 正文阅读

[嵌入式]STM32CubeMX+Keil+Proteus仿真定时器中断控制LED灯

本文说明

项目目标
基于STM32CubeMX配置定时器
利用HAL库开发实现功能:使用TIM2实现定时,每隔1秒实现双闪功能

相关软件使用说明
STM32CubeMX+Keil+Proteus相关的安装、使用、配置等基础操作不再赘述,有关内容的详细介绍如下
STM32CubeMX+Keil5+Proteus实现按键控制LED灯(入门篇).

定时器知识点

STM32常见的定时器资源

1.系统滴答定时器 SysTick
集成在Cortex M3内核的定时器,主要目的是给RTOS提供时钟节拍做时间基准。比如HAL库函数中的HAL_Delay()就是基于这个定时器开发的。如果要做嵌入式Linux的相关项目,要和上位机进行通讯的话,这个函数就不能用了。

2.看门狗定时器 WatchDog

3.实时时钟 RTC

4.基本定时器 TIM6、TIM7

5.通用定时器 TIM2、TIM3、TIM4、TIM5
在基本定时器的基础上,实现输出比较、输入捕获、PWM生成、单脉冲模式输出等功能。这类定时器最具代表性,使用也最为广泛

6.高级定时器 TIM1、TIM8

STM32通用定时器知识点

定时器结构
由一个可编程预分频器(Prescaler)驱动的16位自动重装主计数器(Counter Period)构成。可以对内部时钟或触发源以及外部时钟或触发源进行计数

工作原理
首先,定时器时钟信号送入16位可编程预分频器,该预分频器系数为0~65535之间的任意数值。当预分频器溢出后,就向16位主计数器发出一个脉冲信号
预分频器本质就是一个加法计数器,预分频器系数则是加计数的溢出值

定时器发生中断时间计算方法
定时时间 = (Prescaler+1)x (Counter Period+1)x 1/定时器时钟频率

由于定时器时钟频率固定,所以我们在STM32CubeMX中进行配置定时器时钟时就只需要输入另外两个值

例如我们假设时钟信号为72MHz,每隔100ms翻转一次某个引脚的输出电平
由公式 100ms = (Prescaler+1)x (Counter Period+1)x 1/72000000
可设置
参数Prescaler 为71999(72000-1)
参数Counter Period 为99(100-1)

基于STM32CubeMX的定时器项目配置步骤

  1. 设置Clock Source时钟源
  2. 根据需求设置参数Prescaler和Counter Period
  3. 配置NVIC嵌套向量中断控制器
  4. 用户重写定时器溢出回调函数,实现具体的中断逻辑

STM32CubeMX配置方法

在GPIO中设置两个输出LED1和LED2,引脚分别为PA1和PA2
默认输出低电平、推挽模式、无上/下拉、高速输出
在RCC中设置HSE为Crystal/Ceramic Resonator
在Clock Configuration中配置时钟树,32MHz
在SYS中设置Debug方式为No Debug

在这里插入图片描述

由于我们需要使用TIM2定时,所以我们在Timers模块下找到TIM2
【第一步】
设置Clock Source时钟源为Internal Clock(内部时钟),如上图所示
我们的需求定时器频率为32MHz,间隔1秒(1000ms)翻转电平
所以根据定时器发生中断时间计算方法
【第二步】
设置参数Prescaler为31999
设置参数Counter Period为999,如上图所示
【第三步】
配置NVIC嵌套向量中断控制器,勾选使能TIM2中断,如下图所示

在这里插入图片描述
最后配置项目,生成代码就OK啦
STM32CubeMX配置定时器的任务就完成了
接下来做第四步工作,重写定时器溢出回调函数即可

Keil编辑代码逻辑

打开Keil工程,可以看到多了一个tim.c文件,打开i这个文件我们就看到了我们刚刚配置的参数,如下图所示
所以如果我们想要修改这个定时器的时间间隔,改这里的参数即可。

在这里插入图片描述
接着我们去stm32f1xx.it.c文件中找我们的定时器TIM2回调函数
有个TIM2_IRQHandler(),找到内部函数,然后右键Go To Definition Of

在这里插入图片描述
来到void HAL_TIM_IRQHandler(TIM_HandleTypeDef *htim)函数体
一直下拉,直到找到我们需要的时间定时函数HAL_TIM_PeriodElapsedCallback(htim)

在这里插入图片描述
然后再次右键Go To Definition Of,找到我们要的虚函数

在这里插入图片描述
复制到main.c文件中,在Private User Code区域重写代码即可,如图

在这里插入图片描述

/* Private user code ---------------------------------------------------------*/
/* USER CODE BEGIN 0 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
	if(htim->Instance == TIM2)
	{
		HAL_GPIO_TogglePin(GPIOA,GPIO_PIN_1|GPIO_PIN_2);
	}
}
/* USER CODE END 0 */

定时器功能逻辑代码写完了,接下来我们要开启定时器
定位到stm32f1xx_hal_tim.c文件,找到函数HAL_TIM_Base_Start_IT(TIM_HandleTypeDef *htim)

在这里插入图片描述
复制,调用,参数设置为&htim2即可

在这里插入图片描述

  /* USER CODE BEGIN 2 */
	HAL_TIM_Base_Start_IT(&htim2);
  /* USER CODE END 2 */

最后编译程序
准备仿真

Proteus仿真

原理图如下

在这里插入图片描述
仿真运行,看看结果就好了

记得改一下主频为32MHz

在这里插入图片描述
由于Proteus的时间流动和现实时间并不同步,所以这里设置的间隔1秒双闪在Proteus里,给人的感觉慢了好多好多

正确观察时间的姿势应该是这样的,看下方的ANIMATING这里

在这里插入图片描述
由于设置一秒一闪,且默认低电平,所以奇数秒灯灭,偶数秒灯亮
如上图所示,此时为00:00:02xxxxxx,即第二秒内,所以此时灯亮
验证成功!!!

总结

  1. 主要学习了定时器中断的原理
  2. 知道如何用STM32CubeMX配置定时器
  3. 用一个具体项目来实现定时器中断
  4. 学会看Proteus里的运行时间

我是爱学习的诸葛铁锤,觉得有用的话点个赞哈,啾咪

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-07-24 11:39:31  更:2021-07-24 11:40:59 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/25 18:46:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码