HAL STM32主从定时器联级使用

HAL STM32主从定时器联级使用


  • 具体介绍参考STM32参考手册

  • 🌿主从定时器联级:使用一个定时器作为另一个定时器的预分频器。

  • 🍁时钟关系:
    在这里插入图片描述

  • 🌿TIM1 和TIM8 控制寄存器 2(TIMx_CR2)相关位:
    在这里插入图片描述

  • 🔖主定时器需要使能TRGO.从定时器的输入触发源选择ITRx.
    在这里插入图片描述
  • 🌿从模式控制寄存器(TIMx_SMCR):
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

🛠STM32CubeMX配置方法

  • 🔧主定时器配置。(使能TRGO选项)
    在这里插入图片描述
  • 🔨从定时器配置
    在这里插入图片描述
  • 🔖以上配置,实现的是定时器1更新中断6次后,从定时器触发一次。

📙业务代码

  • 🌿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_TIM1_Init();MX_TIM2_Init();MX_USART1_UART_Init();/* USER CODE BEGIN 2 */__HAL_TIM_CLEAR_IT(&htim1, TIM_IT_UPDATE);__HAL_TIM_ENABLE_IT(&htim1, TIM_IT_UPDATE); //开启TIM3的更新中断HAL_TIM_Base_Start_IT(&htim1); //启动定时器__HAL_TIM_CLEAR_IT(&htim2, TIM_IT_UPDATE);__HAL_TIM_ENABLE_IT(&htim2, TIM_IT_UPDATE); //开启TIM3的更新中断HAL_TIM_Base_Start_IT(&htim2); //启动定时器/* USER CODE END 2 *//* Infinite loop *//* USER CODE BEGIN WHILE */while(1) {/* USER CODE END WHILE *//* USER CODE BEGIN 3 */}/* USER CODE END 3 */
}
  • 🌿中断回调函数
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)
{if(htim->Instance == TIM1) {if(__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_UPDATE) != RESET) {HAL_GPIO_TogglePin(LED1_GPIO_Port, LED1_Pin);__HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE);}}if(htim->Instance == TIM2) {if(__HAL_TIM_GET_IT_SOURCE(htim, TIM_IT_UPDATE) != RESET) {HAL_GPIO_TogglePin(LED2_GPIO_Port, LED2_Pin);__HAL_TIM_CLEAR_IT(htim, TIM_IT_UPDATE);}}}

📚测试工程

链接:https://pan.baidu.com/s/1m-ZbaD-LQuQIu26hSKdlXg?pwd=qm3b 
提取码:qm3b

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

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

相关文章

需求工程

对象类(实体类、边界类、控制类)抽象封装继承与泛化多态接口消息组件模式和复用 设计原则 单一职责原则:设计目的单一的类开放封闭原则:对扩展开放,对修改封闭李氏(Liskov)替换原则:子类可以替换父类依赖…

效率系列(十) macOS软件管理工具

大家好,我是半虹,这篇文章来讲 macOS 上的软件管理工具 Homebrew 1、简介 Homebrew 是 macOS 上的包管理器,用户可以通过简单的命令行工具安装和管理软件包 Homebrew 在安装软件时能自动处理依赖问题,简化软件包的安装流程&…

每日OJ题_优先级队列_堆④_力扣295. 数据流的中位数

目录 力扣295. 数据流的中位数 解析代码 力扣295. 数据流的中位数 295. 数据流的中位数 难度 困难 中位数是有序整数列表中的中间值。如果列表的大小是偶数,则没有中间值,中位数是两个中间值的平均值。 例如 arr [2,3,4] 的中位数是 3 。例如 arr…

AI大语言模型GPT —— R 生态环境领域数据统计分析

自2022年GPT(Generative Pre-trained Transformer)大语言模型的发布以来,它以其卓越的自然语言处理能力和广泛的应用潜力,在学术界和工业界掀起了一场革命。在短短一年多的时间里,GPT已经在多个领域展现出其独特的价值…

电商技术揭秘八:搜索引擎中的SEO内部链接建设与外部推广策略

文章目录 引言一、 内部链接结构优化1.1 清晰的导航链接1. 简洁明了的菜单项2. 逻辑性的布局3. 避免深层次的目录结构4. 使用文本链接5. 突出当前位置6. 移动设备兼容性 1.2 面包屑导航1. 显示当前页面位置2. 可点击的链接3. 简洁性4. 适当的分隔符5. 响应式设计6. 避免重复主页…

Windows11下Docker使用记录(二)

Docker使用记录(二) 1. 常用指令2. Dockerfile示例3. 构建docker image Docker中container,image,dockerfile 以及docker hub的关系如图所示,详细可见上一篇帖子。 本文主要记录Dockerfile相关。 1. 常用指令 常用指令…

索引总结(2)

013 为什么官方建议使用自增长主键作为索引?(说一下自增主键和字符串类型主键的区别和影响) 自增主键能够维持底层数据顺序写入读取可以由b树的二分查找定位支持范围查找,范围数据自带顺序 字符串无法完成以上操作 014 使用int…

vue3从精通到入门13:组件的传参方式

组件传参主要通过 props、emits、slots、provide/inject 以及 setup 函数中的 context 来实现。当使用 <script setup> 语法时&#xff0c;传参方式会更加简洁和直观。 1. props props 是父组件向子组件传递数据的主要方式。我们可以使用 defineProps 函数来声明 props…

沐瞳科技一面 客户端开发(45min)

自我介绍 Unity编译方式&#xff08;Mono与IL2CPP区别&#xff09; C#值类型和引用类型的区别 ref和out参数区别 C#装拆箱 C#委托与接口 Unity项目问答 合批了解吗 行为树与状态机的差异 对象池实现 对象池解决了什么问题 熟悉哪些设计模式 观察者模式讲讲 事件管…

重装系统之后,电脑连网卡都没反应怎么办?

前言 有些电脑比较奇葩&#xff0c;安装完成之后会出现网卡连驱动都没有&#xff0c;这时候要安装电脑驱动可是真的烦躁。怎么下手呢&#xff1f; 如果确定电脑的网卡型号还好&#xff0c;直接找个电脑下载个对应的网卡驱动&#xff0c;用U盘复制过去就能安装。 但如果不知道…

内网安全之域内密码喷洒

域内密码喷洒一般和域内用户名枚举一起使用&#xff0c;可以在无域内凭据的情况下&#xff0c;通过枚举出域内存在的用户名&#xff0c;进而对域内存在的用户名进行密码喷洒&#xff0c;以此来获得域内有效凭据。 在Kerberos协议认证的AS-REQ阶段&#xff0c;请求包cname对应的…

构建一个基于IIoT的智能工厂

构建一个基于工业物联网&#xff08;IIoT&#xff09;的智能工厂涉及到多个方面的技术和管理策略。以下是构建智能工厂的关键步骤和考虑因素&#xff1a; 需求分析与规划&#xff1a; 首先&#xff0c;需要对现有的生产流程进行深入分析&#xff0c;确定哪些环节可以通过IIoT技…

排序算法-堆排序

1.什么是堆 堆是一种特殊的数据结构&#xff0c;它是一种二叉树&#xff0c;其中每个节点都具有一个值并且满足以下两个条件&#xff1a; 堆是完全二叉树&#xff1a;除了最底层的叶节点外&#xff0c;其他层都是满的&#xff0c;并且最底层的叶节点都尽量靠左排列。堆中每个…

X服务器远程连接问题解决:Bad displayname ““‘或Missing X server or $DISPLAY

X服务器远程连接问题 报错1 ImportError: this platform is not supported: (failed to acquire X connection: Bad displayname "", DisplayNameError()) Try one of the following resolutions: * Please make surethat you have an X server running, and that …

SQL语句的编写

##创建用户-建表建库 #创建一个用户名为 feng&#xff0c;允许从任何主机 % 连接&#xff0c;并使用密码 sc123456 进行身份验证的用户。 rootTENNIS 16:33 scmysql>create user feng% identified by sc123456; Query OK, 0 rows affected (0.04 sec) #创建一个名为fen…

nuxt3使用记录一:框架摸索

之前直接用的Vue3&#xff0c;后面为了seo&#xff0c;了解到Vue3用SSR渲染很复杂&#xff0c;甚至衍生了出nuxt3这个框架&#xff0c;这个框架在github已经有50K star了&#xff0c;也已经是个非常成熟的框架了&#xff0c;不过我感觉国内的资料也不多&#xff0c;看来国内接受…

notepad++绿色版添加右键菜单

解压路径 D:\Green\notepad_v8.0_x64_绿色版 添加右键菜单.reg 新建nodepad添加右键菜单.reg文件 Windows Registry Editor Version 5.00[HKEY_CLASSES_ROOT\*\shell\NotePad] "Edit with &Notepad" "Icon""D:\\Green\\notepad_v8.0_x64_绿色版…

BUUCTF:BUU UPLOAD COURSE 1[WriteUP]

构造一句话PHP木马 <?php eval(system($_POST[shell])); ?> 利用eval函数解析$shell的值使得服务器执行system命令 eval函数是无法直接执行命令的&#xff0c;只能把字符串当作php代码解析 这里我们构造的木马是POST的方式上传&#xff0c;那就用MaxHacKBar来执行 …

【vite】-【vite介绍】-【vite的基础应用】-【vite的高级应用】-【

目录 vite介绍vite的基础应用vite创建项目vite创建vue3项目vite创建vue2项目vite创建react项目 vite中使用css的各种功能vite中使用tsvite中处理静态资源的方法vite集成eslint和prettiervite中的env环境变量 vite的高级应用 vite介绍 一、特点&#xff1a; 开发时效率极高开箱…

瘦身Spring Boot应用(thinJar)

瘦身Spring Boot应用(thinJar) 简介 我们使用Spring Boot提供的spring-boot-maven-plugin打包Spring Boot应用&#xff0c;可以直接获得一个完整的可运行的jar包&#xff0c;把它上传到服务器上再运行就极其方便。 但是这种方式也不是没有缺点。最大的缺点就是包太大了&…