STM32MP135裸机编程:定时器内核时钟频率计算方法

0 工具准备

STM32MP13xx参考手册

1 定时器内核时钟频率计算方法

1.1 定时器分组

STM32MP135的定时器按照时钟源不同分成了三组,如下:
APB1:
在这里插入图片描述
APB2:
在这里插入图片描述
APB6:
在这里插入图片描述

1.2 定时器内核时钟频率计算方法

在这里插入图片描述
APB1DIV是APB1的分频系数,APB2DIV、APB6DIV同理。TIMG1PRE是第1组定时器的预分频选择,TIMG2PRE、TIMG3PRE同理。相关寄存器如下:
第1组定时器预分频选择寄存器:
在这里插入图片描述
在这里插入图片描述
第2组定时器预分频选择寄存器:
在这里插入图片描述
第3组定时器预分频选择寄存器:
在这里插入图片描述
在这里插入图片描述
APB1分频系数寄存器:
在这里插入图片描述
APB2分频系数寄存器:
在这里插入图片描述
APB6分频系数寄存器:
在这里插入图片描述

2 定时器内核时钟频率计算操作

以下代码打印stm32MP135所有定时器的内核时钟频率等信息:

/*** @brief 获取定时器内核时钟频率** @param clock_source_freq 时钟源频率* @param bus_div 总线分频值* @param timer_pre 定时器预分频值* @return float 定时器内核时钟频率*/
float get_timer_kernel_clock_freq(u32 clock_source_freq, u32 bus_div, u32 timer_pre)
{float timer_kernel_clock_freq = 0.0f;switch (bus_div){case 0:timer_kernel_clock_freq = clock_source_freq;break;case 1:timer_kernel_clock_freq = clock_source_freq * 2;break;case 2:case 3:case 4:if (timer_pre == 0){timer_kernel_clock_freq = clock_source_freq * 2;}else if (timer_pre == 1){timer_kernel_clock_freq = clock_source_freq * 4;}default:break;}return timer_kernel_clock_freq;
}int clk(void)
{float timer_kernel_clock_freq;RCC_PeriphCLKInitTypeDef PeriphClkInit;HAL_RCCEx_GetPeriphCLKConfig(&PeriphClkInit);printf("> Group 1 timer [Clock source : APB1]\r\n");printf("  APB1 clock : %0.3f MHz\r\n", (float)HAL_RCC_GetPCLK1Freq() / 1000000.0f);printf("  APB1 clock divider : %lu\r\n", RCC->APB1DIVR & 0x7);printf("  Group 1 prescaler  : %lu\r\n", RCC->TIMG1PRER & 0x1);timer_kernel_clock_freq = get_timer_kernel_clock_freq(HAL_RCC_GetPCLK1Freq(), RCC->APB1DIVR & 0x7, RCC->TIMG1PRER & 0x1) / 1000000.0f;printf("  TIM2 TIM3 TIM4 TIM5 TIM6 TIM7 kernel clock freq : %0.3f MHz\r\n", timer_kernel_clock_freq);printf("> Group 2 timer [Clock source : APB2]\r\n");printf("  APB2 clock : %0.3f MHz\r\n", (float)HAL_RCC_GetPCLK2Freq() / 1000000.0f);printf("  APB2 clock divider : %lu\r\n", RCC->APB2DIVR & 0x7);printf("  Group 3 prescaler  : %lu\r\n", RCC->TIMG2PRER & 0x1);timer_kernel_clock_freq = get_timer_kernel_clock_freq(HAL_RCC_GetPCLK2Freq(), RCC->APB2DIVR & 0x7, RCC->TIMG2PRER & 0x1) / 1000000.0f;printf("  TIM1 TIM8 clock freq : %0.3f MHz\r\n", timer_kernel_clock_freq);printf("> Group 3 timer [Clock source : APB6]\r\n");printf("  APB6 clock : %0.3f MHz\r\n", (float)HAL_RCC_GetPCLK6Freq() / 1000000.0f);printf("  APB6 clock divider : %lu\r\n", RCC->APB6DIVR & 0x7);printf("  Group 3 prescaler  : %lu\r\n", RCC->TIMG3PRER & 0x1);timer_kernel_clock_freq = get_timer_kernel_clock_freq(HAL_RCC_GetPCLK6Freq(), RCC->APB6DIVR & 0x7, RCC->TIMG3PRER & 0x1) / 1000000.0f;printf("  TIM12 TIM13 TIM14 TIM15 TIM16 TIM17 kernel clock freq : %0.3f MHz\r\n", timer_kernel_clock_freq);return 0;
}

打印结果如下:
在这里插入图片描述

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

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

相关文章

python双下划线怎么打

连续按键盘上的“shift_”键两次即可,不同编辑器可能显示会不太一样。像图1中那样没连起来也是对的,没有语法错误。

基于python豆瓣电影爬虫数据可视化分析推荐系统(完整系统源码+数据库+详细文档+论文+详细部署教程)

文章目录 基于python豆瓣电影爬虫数据可视化分析推荐系统(完整系统源码数据库详细文档论文详细部署教程)一、 选题背景二、研究目的三、开发技术介绍1、Django框架2、LDA3、机器学习推荐算法4、大数据爬虫5、大数据Echarts可视化 四、系统设计思想五、部…

C++ | Leetcode C++题解之第235题二叉搜索树的最近公共祖先

题目&#xff1a; 题解&#xff1a; class Solution { public:TreeNode* lowestCommonAncestor(TreeNode* root, TreeNode* p, TreeNode* q) {TreeNode* ancestor root;while (true) {if (p->val < ancestor->val && q->val < ancestor->val) {anc…

贪心算法案例

1.买卖股票的最佳时机 给定一个数组 prices &#xff0c;它的第 i 个元素 prices[i] 表示一支给定股票第 i 天的价格。 你只能选择 某一天 买入这只股票&#xff0c;并选择在 未来的某一个不同的日子 卖出该股票。设计一个算法来计算你所能获取的最大利润。 返回你可以从这笔…

代码随想录算法训练营第31天|LeetCode 56. 合并区间、738.单调递增的数字、968.监控二叉树

1. LeetCode 56. 合并区间 题目链接&#xff1a;https://leetcode.cn/problems/merge-intervals/description/ 文章链接&#xff1a;https://programmercarl.com/0056.合并区间.html 视频链接&#xff1a;https://www.bilibili.com/video/BV1wx4y157nD 思路&#xff1a; 本题关…

SpringBoot新手快速入门系列教程十一:自动生成API文档,Springboot3.x集成SpringDoc

本次项目我们用Maven来做&#xff0c;最近发现gradle其实很多项目的支持比较差&#xff0c;所以项目还是用Maven来新建项目。对比了市面上的几种API生成第三方库&#xff0c;只有springdoc 是能够按照文档就能部署出来的。 官网&#xff1a; OpenAPI 3 Library for spring-bo…

北京航空航天大学学报

《北京航空航天大学学报》是由中华人民共和国工业和信息化部主管&#xff0c;北京航空航天大学主办的中文核心期刊&#xff0c;中国精品科技期刊。1956年创刊&#xff0c;现为月刊&#xff0c;主要刊登有关航空航天及相关学科的优秀学术论文&#xff0c;面向国内外发行。 《北…

链接追踪系列-04.linux服务器docker安装elk

[rootVM-24-17-centos ~]# cat /proc/sys/vm/max_map_count 65530 [rootVM-24-17-centos ~]# sysctl -w vm.max_map_count262144 vm.max_map_count 262144 #先创建出相应目录&#xff1a;/opt/dockerV/es/…docker run -e ES_JAVA_OPTS"-Xms512m -Xmx512m" -d -p 92…

渗透测试入门指南:关键术语一览

引言 在信息安全领域&#xff0c;渗透测试&#xff08;Penetration Testing&#xff09;是一项重要的技能。对于初学者而言&#xff0c;理解一些常用的专业术语是迈向渗透测试的第一步。本文将为基础小白详细介绍渗透测试中的关键术语&#xff0c;帮助你快速上手。 1. POC、EX…

【流媒体】 通过ffmpeg硬解码拉流RTSP并播放

简介 目前RTSP拉流是网络摄像头获取图片数据常用的方法&#xff0c;但通过CPU软解码的方式不仅延时高且十分占用资源&#xff0c;本文提供了一种从网络摄像头RTSP硬解码的拉流的方法&#xff0c;并且提供python代码以便从网络摄像头获取图片进行后续算法处理。 下载ffmpeg F…

2024-07-15 Unity插件 Odin Inspector3 —— Button Attributes

文章目录 1 说明2 Button 特性2.1 Button2.2 ButtonGroup2.3 EnumPaging2.4 EnumToggleButtons2.5 InlineButton2.6 ResponsiveButtonGroup 1 说明 ​ 本章介绍 Odin Inspector 插件中有关 Button 特性的使用方法。 2 Button 特性 2.1 Button 依据方法&#xff0c;在 Inspec…

QT控件篇三

一、微调框 微调框&#xff08;QSpinBox&#xff09;是一个常用的Qt控件&#xff0c;允许用户通过增加或减少值来输入数字。分为两种, 整型-QSpinBox 浮点 QDoubleSpinBoxQSpinBox&#xff08;微调框&#xff09;的 setSingleStep 函数可以用来设置每次调整的步长&#xff08;…

【人工智能】人工智能与传统美工结合,AI美工的详细解析。

AI美工是一个结合了人工智能技术与美工设计的岗位&#xff0c;它利用AI工具和技术来辅助或完成美工设计的各项工作。以下是对AI美工的详细解析&#xff1a; 一、定义与职责 AI美工是指能够熟练使用AI工具和技术&#xff0c;如Midjourney、StableDiffusion等AIGC&#xff08;人…

QT 没有与参数列表匹配的函数模板qMin”实例参数类型为:(<error-type>,quint16)

quint16 numberOfEntries qMin (ui–>readSize->currentText (). toUShort (), quint16 (10 - startAddress)) ;template<class T> constexpr const T &qMin(const T &a, const T &b)quint16 numberOfEntries qM联机搜索return QModbusDataUnit (tab…

Spring Boot与Apache Pulsar的集成

Spring Boot与Apache Pulsar的集成 大家好&#xff0c;我是免费搭建查券返利机器人省钱赚佣金就用微赚淘客系统3.0的小编&#xff0c;也是冬天不穿秋裤&#xff0c;天冷也要风度的程序猿&#xff01; 一、引言 Apache Pulsar作为一款高性能、持久化的分布式消息系统&#xf…

2024安全行业大模型技术应用态势发展报告

以上是资料简介和目录&#xff0c;如需下载&#xff0c;请前往星球获取&#xff1a;https://t.zsxq.com/dH9bu

qt 队列和线程

1.qt 队列应用 概要 这里采用定周期检查任务的方式来处理队列&#xff0c;虽然没有分线程&#xff0c;但和大部分队列任务的处理方式相同&#xff0c;因为队列最主要的价值就是对任务的排队&#xff0c;所以这种方式是一种很常用的场景。 开始 Qt 队列应用通常涉及到在 Qt …

Python爬虫入门篇学习记录

免责声明 本文的爬虫知识仅用于合法和合理的数据收集&#xff0c;使用者需遵守相关法律法规及目标网站的爬取规则&#xff0c;尊重数据隐私&#xff0c;合理设置访问频率&#xff0c;不得用于非法目的或侵犯他人权益。因使用网络爬虫产生的任何法律纠纷或损失&#xff0c;由使用…

计算机网络之网络互连

1.什么是网络互连 1.1网络互连的目的 将两个或者两个以上具有独立自治能力的计算机网络连接起来&#xff0c;实现数据流通&#xff0c;扩大资源共享范围&#xff0c;或者容纳更多用户。 网络互连包括&#xff1a; 同构网络、异构网络的互连&#xff0c; 局域网与局域网&…

【Linux】多线程_5

文章目录 九、多线程6. 条件变量7. 生产者消费者模型 未完待续 九、多线程 6. 条件变量 在多线程编程中&#xff0c;一个或多个线程可能需要等待某个条件的发生&#xff0c;然后才能继续执行&#xff0c;而不是一直忙等。这种等待通常会占用CPU资源。条件变量提供了一种机制&…