在STM32F407ZGT6中调用不同定时器,想多做几个定时器注意事项

2024-04-09 22:08

本文主要是介绍在STM32F407ZGT6中调用不同定时器,想多做几个定时器注意事项,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

操作中,发现,当写TIM2,3,4,5时,无论是初始化函数,或者中断执行函数时,都很顺畅。

但当写TIM6发现,有错误,undefined,当排查错误时,发现:

以下是译文: 

通用定时器(TIMx)STM32F40x器件中嵌入了10个可同步的通用计时器(差异见表3)。Tim2, tim3, tim4, tim5STM32F40x包括4个全功能的通用定时器:TIM2。TIM5。TIM3。和TIM4。TIM2和TIM5计时器基于32位自动加载上/下计数器和16位预分频器。TIM3和TIM4计时器是基于16位自动加载上行/下行计数器和16位预分频器。它们都有4个独立的通道用于输入捕获/输出比较,PWM或单脉冲模式输出。这在最大的包上给出了多达16个输入捕获/输出比较/ pwm。TIM2。TIM3。TIM4、TIM5通用计时器可以一起工作,或者通过Timer Link特性与其他通用计时器和高级控制计时器TIM1和TIM8一起工作,以实现同步或事件链。这些通用计时器中的任何一个都可以用来产生PWM输出。TIM2。TIM3。TIM4。TIM5都有独立的DMA请求生成。它们能够处理正交(增量)编码器信号和数字输出从1到4霍尔效应传感器。TIM9。TIM10。TIM11 TIM12。TIM13, TIM14这些计时器基于一个16位自动加载上行计数器和一个16位预分频器。TIM10。TIM11。TIM13。TIM14有一个独立的通道,而TIM9和TIM12有两个独立的通道用于输入捕获/输出比较,PWM或单脉冲模式输出。它们可以与TIM2同步。TIM3。TIM4。TIM5功能齐全的通用定时器。它们也可以用作简单的时基基本定时器TIM6和TIM7这些定时器主要用于DAC触发和波形产生。它们还可以用作通用的16位时间基TIM6和TIM7支持独立的DMA请求生成。

因此我们不仅在中断函数名称中要注意,不是单纯的把4,5改成6就可以,还要注意在初始化中多少位自动加载和多少位预分频。

以上截图是由ctrl+f,并且在stm32f40xx.h文件中使用查找,找TIM7_IRQn(随便一个定时器都行,目的只是为了定位,找到定时器的中断函数名称位置而已)这个中断函数名,这时候我们发现之所以写TIM6出错,是因为中断函数名还有一个_DAC_。由芯片手册,我们也发现定时器6,7有点特殊,所以避开一下也好。

 

这篇关于在STM32F407ZGT6中调用不同定时器,想多做几个定时器注意事项的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/889338

相关文章

Java调用Python代码的几种方法小结

《Java调用Python代码的几种方法小结》Python语言有丰富的系统管理、数据处理、统计类软件包,因此从java应用中调用Python代码的需求很常见、实用,本文介绍几种方法从java调用Pyt... 目录引言Java core使用ProcessBuilder使用Java脚本引擎总结引言python

JAVA中while循环的使用与注意事项

《JAVA中while循环的使用与注意事项》:本文主要介绍while循环在编程中的应用,包括其基本结构、语句示例、适用场景以及注意事项,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录while循环1. 什么是while循环2. while循环的语句3.while循环的适用场景以及优势4. 注意

使用Spring Cache时设置缓存键的注意事项详解

《使用SpringCache时设置缓存键的注意事项详解》在现代的Web应用中,缓存是提高系统性能和响应速度的重要手段之一,Spring框架提供了强大的缓存支持,通过​​@Cacheable​​、​​... 目录引言1. 缓存键的基本概念2. 默认缓存键生成器3. 自定义缓存键3.1 使用​​@Cacheab

java如何调用kettle设置变量和参数

《java如何调用kettle设置变量和参数》文章简要介绍了如何在Java中调用Kettle,并重点讨论了变量和参数的区别,以及在Java代码中如何正确设置和使用这些变量,避免覆盖Kettle中已设置... 目录Java调用kettle设置变量和参数java代码中变量会覆盖kettle里面设置的变量总结ja

每天认识几个maven依赖(ActiveMQ+activemq-jaxb+activesoap+activespace+adarwin)

八、ActiveMQ 1、是什么? ActiveMQ 是一个开源的消息中间件(Message Broker),由 Apache 软件基金会开发和维护。它实现了 Java 消息服务(Java Message Service, JMS)规范,并支持多种消息传递协议,包括 AMQP、MQTT 和 OpenWire 等。 2、有什么用? 可靠性:ActiveMQ 提供了消息持久性和事务支持,确保消

2. c#从不同cs的文件调用函数

1.文件目录如下: 2. Program.cs文件的主函数如下 using System;using System.Collections.Generic;using System.Linq;using System.Threading.Tasks;using System.Windows.Forms;namespace datasAnalysis{internal static

【Prometheus】PromQL向量匹配实现不同标签的向量数据进行运算

✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,阿里云开发者社区专家博主,CSDN全栈领域优质创作者,掘金优秀博主,51CTO博客专家等。 🏆《博客》:Python全栈,前后端开发,小程序开发,人工智能,js逆向,App逆向,网络系统安全,数据分析,Django,fastapi

如何在页面调用utility bar并传递参数至lwc组件

1.在app的utility item中添加lwc组件: 2.调用utility bar api的方式有两种: 方法一,通过lwc调用: import {LightningElement,api ,wire } from 'lwc';import { publish, MessageContext } from 'lightning/messageService';import Ca

uva 10061 How many zero's and how many digits ?(不同进制阶乘末尾几个0)+poj 1401

题意是求在base进制下的 n!的结果有几位数,末尾有几个0。 想起刚开始的时候做的一道10进制下的n阶乘末尾有几个零,以及之前有做过的一道n阶乘的位数。 当时都是在10进制下的。 10进制下的做法是: 1. n阶位数:直接 lg(n!)就是得数的位数。 2. n阶末尾0的个数:由于2 * 5 将会在得数中以0的形式存在,所以计算2或者计算5,由于因子中出现5必然出现2,所以直接一

bytes.split的用法和注意事项

当然,我很乐意详细介绍 bytes.Split 的用法和注意事项。这个函数是 Go 标准库中 bytes 包的一个重要组成部分,用于分割字节切片。 基本用法 bytes.Split 的函数签名如下: func Split(s, sep []byte) [][]byte s 是要分割的字节切片sep 是用作分隔符的字节切片返回值是一个二维字节切片,包含分割后的结果 基本使用示例: pa