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.rhkb.cn/news/376947.html

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

相关文章

51单片机9(使用左移实现流水灯编程)

一、序言:下面我们来给大家介绍一下这个流水灯,流水灯如何来实现?我们依然使用这个工程来完成它。 1、那要使用实现这个流水灯,那我们只需要让D1到D8逐个的点亮,那同样要实现它足够的点亮,也会涉及到延时&…

html设计(两种常见的充电效果)

第一种 完整代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title&…

tomcat和nginx实现动静分离

访问nginx就是静态页面&#xff0c;nginx代理index.jsp可以访问tomcat的动态页面。 实验 1、设备以及IP地址 nginx1 192.168.10.41 tomcat1 192.168.10.51 tomcat2 192.168.10.52 2、tomcat1 的配置 创建动态页面 cd /usr/local/tomcat/webapps 创建一个目录作为一个ser…

【LeetCode 链表合集】

文章目录 1. LeetCode 206 反转链表2. NC40 链表相加 1. LeetCode 206 反转链表 题目链接&#x1f517; 解题思路&#xff1a; &#x1f50d; &#x1f427;创建一个新的节点&#xff0c;使用链表头插的方法&#xff1b; 2. NC40 链表相加 题目链接&#x1f517; 解题思路…

C++入门基础(2)

C入门基础&#xff08;2&#xff09; 1.缺省函数2.函数重载3.引用3.1 引用的概念和定义3.2 引用的特性3.3 引用的使用3.3.1引用的特性 4 .const引用5. 指针和引用的关系6.inline 1.缺省函数 • 缺省参数是声明或定义函数时为函数的参数指定⼀个缺省值。在调用该函数时&#xf…

【服务器】在Linux查看运行的Python程序,并找到特定的Python程序

在Linux查看运行的Python程序并找到特定的Python程序 写在最前面1. 使用ps命令查看所有Python进程查看详细信息 2. 使用pgrep命令查找Python进程ID 3. 使用top或htop命令使用top命令使用htop命令 4. 使用lsof命令查找Python进程打开的文件 5. 使用nvidia-smi命令查看GPU使用情况…

【接口自动化_06课_Pytest+Excel+Allure完整框架集成】

一、logging在接口自动化里的应用 1、设置日志的配置&#xff0c;并收集日志文件 日志的设置需要在pytest.ini文件里设置。这个里面尽量不要有中文 2、debug日志的打印 pytest.ini文件的开关一定得是true才能在控制台打印日志 import allure import pytest from P06_PytestFr…

使用 YUM 仓库和 NFS 共享存储的详细指南

使用 YUM 仓库和 NFS 共享存储的详细指南 文章目录 使用 YUM 仓库和 NFS 共享存储的详细指南一、YUM 仓库服务1.1 YUM 介绍1.2 YUM 源的提供方式1.2.1 配置本地源仓库1.2.2 配置 FTP 源1.2.3 配置 HTTP 源 1.3 网络源配置1.3.1 清华源1.3.2 163 源1.3.3 阿里云源 1.4 YUM 命令1…

IntelliJ IDEA自定义菜单(Menus)、任务栏(toolbars)详细教程

本示例是基于IDEA2024.1Ultimate版本的New UI模式下 一、自定义菜单 1、打开Settings&#xff0c;找到Menus and Toolbars 2、点击右边的Main Menu&#xff0c;点击号&#xff0c;选择Add Action 3、弹出Add Action弹窗&#xff0c;搜索或者选择你要添加的指令 二、自定义工具…

Linux命令更新-Vim 编辑器

简介 Vim 是 Linux 系统中常用的文本编辑器&#xff0c;功能强大、可扩展性强&#xff0c;支持多种编辑模式和操作命令&#xff0c;被广泛应用于程序开发、系统管理等领域。 1. Vim 命令模式 Vim 启动后默认进入命令模式&#xff0c;此时键盘输入的命令将用于控制编辑器本身&…

OpenCV 寻找棋盘格角点及绘制

目录 一、概念 二、代码 2.1实现步骤 2.2完整代码 三、实现效果 一、概念 寻找棋盘格角点&#xff08;Checkerboard Corners&#xff09;是计算机视觉中相机标定&#xff08;Camera Calibration&#xff09;过程的重要步骤。 OpenCV 提供了函数 cv2.findChessboardCorners…

LeetCode 441, 57, 79

目录 441. 排列硬币题目链接标签思路代码 57. 插入区间题目链接标签思路两个区间的情况对每个区间的处理最终的处理 代码 79. 单词搜索题目链接标签原理思路代码 优化思路代码 441. 排列硬币 题目链接 441. 排列硬币 标签 数学 二分查找 思路 由于本题所返回的 答案在区间…

【C++】入门基础(引用、inline、nullptr)

目录 一.引用 1.引用的定义 2.引用的特性 3.引用的使用场景 4.const引用 5.引用和指针的区别 二.inline 三.nullptr 一.引用 1.引用的定义 引用不是新定义一个变量&#xff0c;而是给已经存在的变量取一个别名&#xff0c;编译器不会给引用变量开辟内存空间&#xff0c…

检测精度评价指标召回率和精确率

检测精度评价指标为&#xff1a; 1、召回率&#xff08;Recall Rate &#xff09; 2、平均精度均值&#xff08;mAP&#xff09; 3、平均对数漏检率&#xff08;MR-2&#xff09; 计算 TP 和 FP 的示例 假设你有一个目标检测模型&#xff0c;并使用它检测图像…

Git代码管理工具 — 3 Git基本操作指令详解

目录 1 获取本地仓库 2 基础操作指令 2.1 基础操作指令框架 2.2 git status查看修改的状态 2.3 git add添加工作区到暂存区 2.4 提交暂存区到本地仓库 2.5 git log查看提交日志 2.6 git reflog查看已经删除的记录 2.7 git reset版本回退 2.8 添加文件至忽略列表 1 获…

在conda的环境中安装Jupyter及其他软件包

Pytorch版本、安装和检验 大多数软件包都是随Anaconda安装的&#xff0c;也可以根据需要手动安装一些其他软件包。 目录 创建虚拟环境 进入虚拟环境 安装Jupyter notebook 安装matplotlib 安装 pandas 创建虚拟环境 基于conda包的环境创建、激活、管理与删除http://t.cs…

(实测可用)(3)Git的使用——RT Thread Stdio添加的软件包,github与gitee冲突造成无法上传文件到gitee

★硬件资源&#xff1a;本文章以STM32L431RCT6做主控芯片做验证&#xff1b; ★IDE开发环境&#xff1a;RT Thread stdio&#xff1b; ★RT Thread 版本&#xff1a;V4.0.3 一、RT Thread Stdio加载软件包 1、如下图所示&#xff0c;通过RT Thread Stdio加载的软件包&#…

gd32发送数据,定义参数,接收中断

void usart_receive_data(uint8_t ucch) {usart_data_receive(UART3); } void usart_send_data(uint8_t ucch) {usart_data_transmit(UART3,(uint8_t)ucch);while(usart_flag_get(UART3,USART_FLAG_TBE) RESET); } 这是在c文件中定义函数&#xff0c;之后在h文件中声明&#…

Windows终端远程登陆Linux服务器(SSH+VScode)

W i n d o w s 终端远程登陆 L i n u x 服务器&#xff08; S S H V S c o d e &#xff09; \huge{Windows终端远程登陆Linux服务器&#xff08;SSHVScode&#xff09;} Windows终端远程登陆Linux服务器&#xff08;SSHVScode&#xff09; 文章目录 写在前面通过SSH远程连接L…

4000厂商默认账号密码、默认登录凭证汇总.pdf

获取方式&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/1F8ho42HTQhebKURWWVW1BQ?pwdy2u5 提取码&#xff1a;y2u5