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

硬件开发板: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.xdnf.cn/news/1522534.html

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

相关文章

数仓基础(九):各大公司实时数仓实践

文章目录 各大公司实时数仓实践 一、网易实时数仓实践 二、汽车之家实时数仓实践 三、顺丰实时数仓实践 四、​​​​​​​腾讯实时数仓实践 五、​​​​​​​​​​​​​​滴滴实时数仓实践 ​​​​​​​​​​​​​​各大公司实时数仓实践 一、网易实时数仓实践…

Opencv实现提取卡号(数字识别)

直接开始 实行方法 解析命令行参数:使用argparse库来解析命令行输入,确保用户提供了输入图像和模板图像的路径。 读取模板图像:使用cv2.imread()函数读取模板图像的路径,并显示原始图像。 图像预处理: 将图像转换为…

Promises - 从零开始(万字详解)

目录 前言 为何这样设计 回调函数 介绍Promises 使用Promises 创建自己的Promises Promise 链 传递数据 错误处理Promises async / await 结语 ❤️❤️❤️ 前言 在学习JavaScript的过程中往往会面临很多挑战,其中最让人头疼的要数Promises了。想真正理…

【CF补题数学裴蜀定理】 div969 C Dora and C++

Dora and C 分析: 对于两个数x,y 我们想要通过如下操作使得他们的差变得尽可能小 我们要如何操作? 这个操作也就是相当于 d e l ∣ y − x ∣ − k 1 ∗ x − k 2 ∗ y del|y-x|-k_1*x-k_2*y del∣y−x∣−k1​∗x−k2​∗y,让这个差值最小…

【网络安全】IDOR之敏感数据泄露

未经许可,不得转载。 文章目录 正文正文 在测试“添加到收藏夹”功能时,我拦截了发送到服务器的请求,请求体如下: {“uriTemplate”:“asset/{assetId}/favorite”,“version”:“v2”,“type”:“POST”,“req_service”:“pict”,“url”:“asset/VICTIMS_ASS…

Android Google Maps

Android 谷歌地图 前言正文一、设置Google Cloud 项目二、项目配置① 设置SDK② 配置API密钥③ 配置AndroidManifest.xml 三、添加地图四、定位当前① 请求定位权限② 我的位置控件③ 获取当前位置 五、配置地图① xml配置地图② 代码配置地图③ 地图点击事件④ 管理Marker 六、…

薛定谔的空气墙?一文带你了解其背后的技术原理

封面图 悟空来了都得撞墙? 目前,被称作“村里第一个大学生”的国产3A游戏《黑神话:悟空》发售已经有一段时间了,游戏采用虚幻引擎4技术,仿佛将传统与现代的界限模糊,玩家游玩时沉浸感极强。然而&#xff…

自然语言处理系列五十三》文本聚类算法》文本聚类介绍及相关算法

注:此文章内容均节选自充电了么创始人,CEO兼CTO陈敬雷老师的新书《自然语言处理原理与实战》(人工智能科学与技术丛书)【陈敬雷编著】【清华大学出版社】 文章目录 自然语言处理系列五十三文本聚类算法》文本聚类介绍及相关算法K…

四、基本电路设计笔记——4.1 DC-DC稳压电路

目录 4.1 DC-DC稳压电路 4.1.1 基于MT2492的DC-DC稳压电路 (1)芯片参数 (2)芯片引脚 (3)输出电压设置 4.1.2 基于MT2499A的DC-DC稳压电路 (1)芯片参数 (2&#xf…

多模态生成发文量大涨!最新成果统一Transformer和Diffusion,含金量超高

最近多模态生成领域也在“神仙打架”,比如Meta的全新训练方法Transfusion,用单个模型就能同时生成文本和图像! 还有之前华为、清华提出的个性化多模态内容生成技术PMG,生成的内容可“量身定制”,更能满足偏好。 这些…

深入解析Linux轻量级进程:线程的概念、原理、优缺点及其与进程的关系与区别

🍑个人主页:Jupiter. 🚀 所属专栏:Linux从入门到进阶 欢迎大家点赞收藏评论😊 目录 📚Linux线程📕什么是线程*可以使用多进程去并发的执行一个进程的代码,那为什么要由线程呢&#x…

搭子小程序开发,让社交更加有趣

如今,搭子成为了年轻人社交的新兴方式,它作为一种连接年轻人的社交纽带,深受大众的欢迎!各式各样的旅游搭子、健身搭子、游戏搭子等,让年轻人享受到社交的魅力。 随着互联网的发展,寻找搭子也发展到了线上…

一个好用的Maven依赖冲突解决插件:Maven Helper

在项目开发,或项目Maven需要新增依赖、项目依赖组件升级时,经常会出现添加后,因为各个模块中有相同的依赖、不同的版本而导致依赖冲突,从而导致项目启动不起来,这种冲突非常恶心,因为是传递依赖所以会看不出…

Hackme靶场渗透攻略

步骤一,注册登录进去 步骤二,点击search 我们发现有很多书 步骤三,搜索一本书抓包发放到重放器 步骤四,数据改为1*,复制数据包到1.txt,然后打开sqlmap 步骤五,sqlmap查看当前数据库 python s…

多模态AI:原理、应用与未来展望

随着人工智能技术的飞速发展,多模态AI逐渐成为构建智能系统的重要方向。传统的AI系统通常依赖于单一模态的数据,如文本、图像或音频。而多模态AI通过结合多种数据类型,能够在更复杂的场景下提供更智能的解决方案。本文将深入探讨多模态AI的原…

Android 11 (R)AMS Activity内部机制

一、AMS是如何被管理的 如我们在Android 11(R)启动流程中介绍的一样,AMS和ATMS是在SystemServer中被启动的 ActivityTaskManagerService atm mSystemServiceManager.startService(ActivityTaskManagerService.Lifecycle.class).getService(); mActivityManagerSe…

使用vscode debug cpp/python混合编程的程序(从python调用的C++编译的dll)

使用vscode debug cpp/python混合编程的程序(从python调用的C编译的dll) 1. 安装插件 Python C Debugger https://marketplace.visualstudio.com/items?itemNamebenjamin-simmonds.pythoncpp-debug 2. 在.vscode/launch.json中增加配置 拷贝自 https:…

默默的学python——两个重要的函数dir()、help()

一、dir()函数 dir()函数在Python中用于返回一个对象的所有属性和方法的列表,当你对一个函数使用dir()时,它会返回函数对象的所有可访问的属性和方法的名字列表。 具体的说,dir()函数获取的内容包括: 1.特殊方法和魔法方法 如…

Kettle 锁表原因及解决办法【源码级分析】

文章目录 背景源码分析锁表场景1:资源库锁表锁表场景2:写日志锁表在哪里配置的kettle_log_table?官方解释自增 SQL 获取 BatchI 原理解决自增 SQL 获取 BatchID背景 Kettle 7.1.0 经常出现锁表的情况,体现为在数据库里有一条锁表 SQL,然后整个 Kettle 都无法运行。😂�…

App推广新姿势:Xinstall一键下载唤起,轻松提升用户体验!

在App推广和运营的道路上,你是否遇到过这样的困扰:用户点击下载链接后,却无法直接唤起App,导致用户体验不佳,甚至造成用户流失?别担心,今天我们就来科普一个神器——Xinstall,它能帮…