【STM32+HAL库】---- 基础定时器中断控制LED

news2024/11/13 23:38:56
硬件开发板:STM32G0B1RET6
软件平台:cubemax+keil+VScode

1 新建cubemax工程

1.1 配置系统时钟RCC

image

1.2 配置LED

LED由PA5引脚控制,选择PA5引脚,选择GPIO_Output模式
image
image

1.3 定时时间的计算

T = ( 预分频系数 + 1 ) ( 重装载值 + 1 ) 时钟频率 T=\frac{(预分频系数+1)(重装载值+1)}{时钟频率} T=时钟频率(预分频系数+1)(重装载值+1)

1.4 配置定时器

image
根据定时时间计算公式,设置好所需要的值。此时,时钟频率是64MHz,预分频系数是63,重装载值是999,即 T = ( 63 + 1 ) ( 999 + 1 ) 64 M = 64 ∗ 1000 64000000 = 1 m s T=\frac{(63+1)(999+1)}{64M}=\frac{64*1000}{64000000}=1ms T=64M(63+1)(999+1)=64000000641000=1ms,也就是每隔1ms,定时器就进入一次中断

1.5 使能定时器中断

image

2 代码

2.1 定义变量

uint16_t ms=0;     /*定义ms变量,用于累加计数*/

2.2 中断回调函数

/* USER CODE BEGIN 4 */
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{
  if (htim == &htim6)  /*判断中断源*/
  {
    ms++;    /*累加计数*/
    if (ms==1000)   /*达到1s时,执行该函数*/
    {
      HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin);   /*翻转LED*/
      ms=0;      /*清零,重新累计计数达到1s*/
    }
  }
}
/* USER CODE END 4 */

2.3 main函数

int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_TIM6_Init();
  /* USER CODE BEGIN 2 */
  __HAL_TIM_CLEAR_IT(&htim6,TIM_IT_UPDATE);   /*清除更新中断标志,避免定时器一启动就进入更新中断*/
  HAL_TIM_Base_Start_IT(&htim6);  /*开启定时器中断*/
  /* USER CODE END 2 */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2101581.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

RedisStack十部曲之二:Redis的核心概念

文章目录 键空间修改和查询键键过期遍历键空间 客户端缓存在计算机科学中有两个难题客户端缓存的Redis实现跟踪模式的工作机制统一的键命名空间 两种连接方式缓存策略Opt-in 模式Opt-out 模式广播模式NOLOOP选项避免竟态条件当与服务器失去连接怎么办什么值得缓存 流水线请求/响…

【2024 CCF编程能力等级认证(GESP)C++ 】 计算机基础知识

目录 1. 引言2. 计算机系统结构2.1 中央处理器(CPU - Central Processing Unit)2.1.1 运算器 2.1.2 控制器2.1.3 性能指标2.2 存储器2.3 输入设备2.4 输出设备 3. 计算机系统层次结构4. 操作系统4.1 操作系统分类4.2 操作系统常见操作4.2.1 基本开关机操…

SpringBoot实现文件内容对比

背景 在上一篇博客中,我实践了WORD转换成PDF/TXT的实现方式,本周接到一个新的需求,恰好就用上了这个成果。需求如下:客户提供一个WORD范本给用户,用户范本进行修改后,再反馈给客户。反馈的成果多种多样&…

RocketMQ消息回溯实践与解析

文章目录 1 问题背景2 验证2.1 生产者启动2.2 消费者启动2.3 执行回溯2.4 结果验证2.5 验证小结2.5.1 分析参数2.5.2 思考 3 分析3.1 策略模式,解析命令行3.2 创建客户端,与服务端交互3.3 获取topic对应的broker地址,提交重置请求3.4 与 name…

TCP 拥塞控制

概念详解 TCP拥塞控制是网络通信中的一个关键机制,它通过动态调整发送数据的速率来避免网络拥塞。以下是TCP拥塞控制的详细概念解释: 拥塞窗口(CWND, Congestion Window): 定义:发送方在收到接收方的确认(…

华为网络工程师证书等级有哪些?怎么备考?

华为网络工程师是由华为技术厂商推出的一系列网络工程师认证,其主要目的就是为了培养了验证网络工程师在华为技术以及解决方案方面的拥有一定的专业知识及技能,该证书分为多个等级,涵盖了不同网络领域及技术,也为众多的网络工程师…

SqlServer: 安装或升级到SqlServer2022

一、下载安装包。 https://info.microsoft.com/ww-landing-sql-server-2022.html?lcidzh-CN 简单注册一下之后,就可以下载安装包了。 或者在我的资源中下载: https://download.csdn.net/download/yenange/89709660 系统要求: https://…

暴力破解和撞库攻击有什么区别,怎么防御暴力破解和撞库攻击

在网络世界中,我们的账户安全时刻面临着各种威胁。其中,暴力破解和撞库攻击就是常见的两种危险手段。今天,就让我们深入了解这两种攻击方式的含义,并学习如何有效地进行防护。 暴力破解的含义 暴力破解,就如同一个不…

java【day03】---(Vue-Element)

1 Ajax 1.1 Ajax介绍 1.1.1 Ajax概述 我们前端页面中的数据,如下图所示的表格中的学生信息,应该来自于后台,那么我们的后台和前端是互不影响的2个程序,那么我们前端应该如何从后台获取数据呢?因为是2个程序&#xf…

星闪NearLink短距无线连接技术

星闪NearLink短距无线连接技术,作为华为主导的新一代无线短距通信标准技术,自2020年起由中国工信部牵头制定标准,旨在为万物互联时代提供更高效、更稳定的连接方式。 类似技术介绍 AirDrop(苹果) AirDrop是苹果公司开发…

Apifox使用学习

Apifox是API文档、API调试、API Mock、API自动测试一体化协作平台,定位SwaggerPostmanMockJMeter。 只需要定义好API文档,API调试、API数据Mock、API自动化测试就可以直接使用。 API文档和API开发测试使用同一个工具,API调试完成后即可保证…

PPT图表制作不再难!这款在线PPT软件让办公更简单!

ppt图表怎么制作? 在当下注重视觉呈现的数字化时代,有效的信息传递和数据可视化变得越来越重要。不管是商业演示、学术报告还是项目汇报,一份精心制作的PPT演示文稿,往往能够起到事半功倍的效果。其中,图表作为PPT中不…

n*n矩阵,输出矩阵中任意两点之间所有路径

题目1:给你一个正整数n, 构造一个n*n的四项链表矩阵。 要求: 1.使用四项链表 2.矩阵从左到右,从上到下值依次为1,2,3,4,......n*n 题目2:基于题目1, 在n*n链表矩阵中,输出矩阵中任意两点之间所有…

5款文案自动生成器,高质量创意文案一键为你生成

在当今竞争激烈的内容创作领域,每一个字、每一句话都承载着巨大的价值。对于创作者而言,文案自动生成器的出现,犹如在茫茫大海中点亮了一座指引方向的灯塔。它们不仅为创作者节省了宝贵的时间和精力,更像是一把神奇的钥匙&#xf…

5.4树,森林

5.4.1树的存储结构 可采用顺序存储结构or链式存储结构 要求能唯一的反映树中各节点之间的逻辑 1.双亲表示法 采用一端连续的空间来存储,同时在每个节点中增设一个伪指针,指示双亲节点在数组中的下标 优点:找双亲节点方便,找孩子不方便 attention:由于根节点无双亲节点,所以…

C++:关于反向迭代器的学习分享

前言: 小编仅是一位初学者,所以对于C的理解有限,文章大概率会出现表达不清楚可能也只是因为小编不知道如何更好表达,本文章仅作为一个学习的总结分享。 反向迭代器的概念 反向迭代器故名思意解释反向的迭代器,与正向迭…

地铁X光危险品检测数据集

地铁X光危险品检测数据集介绍 数据集概览 本数据集旨在为地铁X光安检系统提供高质量的危险品检测训练素材。数据集包含18类常见危险品,总共6265张图像,每张图像均经过精心标注,确保了数据的质量和一致性。数据集适用于多种格式(Y…

Spring优缺点和SpringBoot基础和搭建

前言 Spring框架是一个流行的Java企业级开发框架,旨在简化应用程序开发。它的核心特性包括依赖注入和面向切面编程,提供了灵活性和强大的社区支持。然而,Spring也存在学习曲线陡峭和配置复杂等缺点。 Spring Boot是基于Spring的项目&#x…

2024年高教社杯数学建模竞赛须知——三大注意事项

为了让大家在最后一天更好的备注国赛,我们今日将结合2024年国赛的新规给大家讲解国赛中三大主要的事项: 论文模版问题——国赛乃至大部分数模竞赛从来没有给出任何的论文模版,大部分的模版均为一次又一次学生、老师内部传播形成。资料使用问…

文件包含PHP伪协议利用方法

首先我们需要把配置文件php.ini 在 php.ini ⾥有两个重要的参数 allow_url_fopen 、allow_url_include; allow_url_fopen:默认值是 ON。允许 url ⾥的封装协议访问⽂件; allow_url_include:默认值是 OFF。不允许包含 url ⾥的封装协议包含⽂件&#x…