基于STM32CubeMX定时器中断实现 LED 闪烁

本实验基于STM32CubeMX实现对STM32开发板的配置,通过定时器中断实现 LED 闪烁。

Table of Contents

基于STM32CubeMX定时器中断实现 LED 闪烁

1. 软件与硬件

1.1 硬件要求

1.2 软件要求

2. STM32CubeMX配置开发板

2.1 Pinout & Configuration

2.2 Clock Configuration

2.3 Project Manager

3. 程序代码

3.1 usart.c

3.2 main.c

4. 程序分析

4.1 定时器中断逻辑

4.2 定时器周期

4.3 主要函数

1. 软件与硬件

1.1 硬件要求

(1)ALIENTEK ELITE STM32F103 开发板 (STM32F103ZET6 芯片)

(2)USB转TTL 模块

1.2 软件要求

(1)Java Runtime Environment (JRE) 1.8.0 版本

(2)STM32CubeMX 5.6.1 版本

(3)IAR Embedded Workbench 8.0

(4)串口调试工具

2. STM32CubeMX配置开发板

LED 0:PB5

LED 1:PE5

USART1_TX:PA9

USART1_RX:PA10

2.1 Pinout & Configuration

(1)RCC 配置

(2)GPIO 配置

(3)NICV 配置

(4)SYS 配置

(5)Timers 配置

(6)USART1 配置

2.2 Clock Configuration

2.3 Project Manager

3. 程序代码

3.1 usart.c

实现printf的重定向

/* USER CODE BEGIN 0 */
/******************************************************************
*@brief  Retargets the C library printf  function to the USART.
*@param  None
*@retval None
******************************************************************/
#include "stdio.h"#ifdef __GNUC__#define PUTCHAR_PROTOTYPE int _io_putchar(int ch)
#else #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__*/PUTCHAR_PROTOTYPE
{HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);return ch;
}
/* USER CODE END 0 */

3.2 main.c

(1)添加头文件

/* Private includes ----------------------------------------------------------*/
/* USER CODE BEGIN Includes */
#include <stdio.h>
#include <string.h>
/* USER CODE END Includes */

(2)主函数中开启定时器中断

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

(3)中断回调函数中反转 LED 状态

/* USER CODE BEGIN 4 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{static unsigned char ledState = 0;if (htim == (&htim2)){if (ledState == 0)HAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_RESET);elseHAL_GPIO_WritePin(GPIOE,GPIO_PIN_5,GPIO_PIN_SET);ledState = !ledState;}
}
/* USER CODE END 4 */

4. 程序分析

4.1 定时器中断逻辑

4.2 定时器周期

本实验的时钟频率为72MHz,由此可知,时钟周期为1/72MHz

Tclk:时钟频率

Tout :定时器周期

不太官方的理解,有错欢迎指正:

(Prescaler+1)x 1/Tclk 可理解为一次计数的时间,(Counter Period +1) 可理解为总的计数次数,

则不难理解,定时器周期 = 一次计数时间 x 总的计数次数。通过带入参数,可知本实验的定时器周期为 500ms。

4.3 主要函数

【MCU】基于STM32CubeMX定时器中断实现LED闪烁相关推荐

  1. Proteus:单片机定时器中断(LED闪烁)

    题目概述: 单片机定时器中断(LED闪烁). 编程: #include <reg51.h> #define uchar unsigned char #define uint unsigne ...

  2. STM32之定时器中断控制LED闪烁

    上篇博客我们是用延时函数实现了LED的闪烁,今天我们使用STM32的定时器来使LED闪烁. 关于32的定时器的种类,今天我在这先不做过多的说明,有时间我会再另写一篇博客来专门介绍32的定时器.今天我们 ...

  3. 定时器中断控制LED闪烁(每隔1s)---普中科技开发仪

    定时器中断o,利用中断控制LED闪烁每隔1s闪烁一次(精确的1s) notes: (1)工作方式寄存器TMOD ,低四位用于To,高四位用于T1,(GATE,C/T- ,M1,M0) 一般让GATE ...

  4. MSP432E401Y-用定时器中断控制LED闪烁

    一.初始化以及初始化配置 要使用GPTM(GPIO_TIMER),必须先配置对应的RCGCTIMER寄存器中的TIMERn(分配时钟需求),如果同时信号要从对应的引脚输出则需要同时配置对应的RCGCG ...

  5. 定时器中断程序控制led闪烁

    1 #include <reg52.h> 2 typedef unsigned char u8; 3 typedef unsigned int u16; 4 sbit led = P1^0 ...

  6. 基于STC15W4K32单片机仿真《定时器0实现LED闪烁》

    1. 编 程 软 件:keil5版本 2.仿 真 软 件:Proteus8.12 3.单片机选型:STC15W4K32S4 4.学 习 目 标:学习定时器0 的使用 5.程 序 文 件 : /**** ...

  7. 51C语言中断LED闪烁,单片机定时器中断实现LED灯闪烁程序

    运用定时器0工作在方式1(16位计数器)实现LED灯的闪烁.先来看看定时器0工作在方式1的逻辑结构图. 从上图可以看到,GATE先经过非门,再和INT0引脚作为或门的输入.这里简单提一下数字电路中的与 ...

  8. Holtek合泰单片机 《四》 从TM定时器中断到led灯1s闪烁

    跳过中断直接讲TM中断是不是有些超前了? 由于最近参加了一个项目,真是忙的不要不要的,没办法,只有抽了点放假的时间来更新下自己的博文,希望对正在学习HT单片机的同学有帮助. 重庆合泰初赛是5月15日, ...

  9. 定时器中断控制led灯闪烁

    定时器 stm32为我们提供了8个定时器,分为:通用是定时器(TIM2~TIM5),高级定时器(TIM1和TIM8),基本定时器(TIM6和TIM7).至于三者之间的区别可以参考以下博客:[https ...

最新文章

  1. Java反射学习(java reflect)(三)
  2. html中亮度怎么写,html – 使用CSS更改背景的亮度
  3. C++中OpenCV应用
  4. mysql-3 检索数据(1)
  5. CodeForces - 906E Reverses(回文自动机+Palindrome Series优化dp)
  6. 深度学习(五十二)变分贝叶斯自编码器(下)
  7. 在linux摸索的过程
  8. window服务器查看硬盘有几块,从多个远程Windows服务器获取磁盘空间信息
  9. 给属性赋值_赋值方法:虚拟变量 Dummy Coding
  10. 金山词霸2006专业版(300M)的无法屏幕取词问题的解决方法!
  11. matlab去除图片水印_一种基于MATLAB去图片水印方法
  12. 匿名游走 Anonymous Walk
  13. sketchup画圆柱面
  14. centos 安装 pcre
  15. Html 所有触发事件
  16. MySQL备份系列--备份方案总结性梳理
  17. Spring Boot 整合 Flowable-ui-modeler 6.7.2
  18. windows 显示进程的命令 TASKLIST 详解
  19. 腾讯试点强制6点下班!标志着反996、反内卷的第一枪吗?
  20. 盘点谷歌26个插件生态;WPS AI上新与测评;Prompt中文指南;ChatGPT最新联网插件评测 | ShowMeAI日报

热门文章

  1. 编写一个单科学生成绩处理程序
  2. 对话“未知的边界”元宇宙艺术展 | Layaverse 邀您体验次元畅享艺术之美
  3. Tensorflow2.x框架-神经网络实现鸢尾花分类
  4. 计算机表格制作中这么打字,excel表格先打字还是先制表?
  5. 嵌入式linux pcie网卡配置,[嵌入式linux]PCIe 热拔插(rescan)
  6. xmind可以画流程图吗_怎样用XMind方便地制作流程图
  7. C++| 匠心之作 从0到1入门学编程【视频+课件+笔记+源码】
  8. IBM Cloud 2015 - Invoice - 03 payment 支付方式
  9. 国密SM4,layui前端 和.net core后台 加密解密 .net加密解密
  10. 修改注册表值scancode map来屏蔽键盘上的键