进阶——第十六届蓝桥杯嵌入式熟练度练习(开发板捕获频率和占空比)
单通道捕获频率
HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1);HAL_TIM_IC_Start_IT(&htim3,TIM_CHANNEL_1);
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{if(htim->Instance==TIM2)
{cap1=HAL_TIM_ReadCapturedValue(&htim2,TIM_CHANNEL_1);TIM2->CNT=0;R40_frq=80000000/80/cap1;HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1);
}
if(htim->Instance==TIM3)
{cap2=HAL_TIM_ReadCapturedValue(&htim3,TIM_CHANNEL_1);TIM3->CNT=0;R39_frq=80000000/80/cap2;HAL_TIM_IC_Start_IT(&htim3,TIM_CHANNEL_1);
}}
双通道捕获下降沿
uint32_t cap1_2,cap2_2,R39_duty,R40_duty;
void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)
{
if(htim->Instance==TIM2)
{ if(htim->Channel==HAL_TIM_ACTIVE_CHANNEL_1){cap1=HAL_TIM_ReadCapturedValue(&htim2,TIM_CHANNEL_1);cap1_2=HAL_TIM_ReadCapturedValue(&htim2,TIM_CHANNEL_2);TIM2->CNT=0;R40_frq=80000000/80/cap1;R40_duty=(1.0*cap1_2)/(1.0*cap1)*100;HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1);HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_2);}
}
if(htim->Instance==TIM3)
{ if(htim->Channel==HAL_TIM_ACTIVE_CHANNEL_1){cap2=HAL_TIM_ReadCapturedValue(&htim3,TIM_CHANNEL_1);cap2_2=HAL_TIM_ReadCapturedValue(&htim3,TIM_CHANNEL_2);TIM3->CNT=0;R39_frq=80000000/80/cap2;R39_duty=(1.0*cap2_2)/(1.0*cap2)*100;HAL_TIM_IC_Start_IT(&htim3,TIM_CHANNEL_1);HAL_TIM_IC_Start_IT(&htim3,TIM_CHANNEL_2);}
}
}
为什么要使用 (1.0 * cap2_2) / (1.0 * cap2) * 100;
不使用 1.0 时,由于 cap2_2 / cap2 是整数除法,结果为 0,最终得到的占空比也是 0;
当使用 1.0 时,计算表达式变为 (1.0 * cap2_2) / (1.0 * cap2) * 100。1.0 是一个浮点数常量,在 C 语言里,当一个整数和一个浮点数进行运算时,整数会被隐式地转换为浮点数类型,然后进行浮点数运算。
在 1.0 * cap2_2 中,cap2_2 是整数,1.0 是浮点数,所以 cap2_2 会被转换为浮点数,运算结果是一个浮点数;同理,1.0 * cap2 的结果也是浮点数。这样一来,(1.0 * cap2_2) / (1.0 * cap2) 就变成了浮点数除法。
浮点数除法会保留小数部分,对于 cap2 = 10 和 cap2_2 = 3 的情况,(1.0 * 3) / (1.0 * 10) 就是 3.0 / 10.0,结果是 0.3。最后再将这个结果乘以 100,就得到了准确的占空比 30.00%。
相关文章:
进阶——第十六届蓝桥杯嵌入式熟练度练习(开发板捕获频率和占空比)
单通道捕获频率 HAL_TIM_IC_Start_IT(&htim2,TIM_CHANNEL_1);HAL_TIM_IC_Start_IT(&htim3,TIM_CHANNEL_1); void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) {if(htim->InstanceTIM2) {cap1HAL_TIM_ReadCapturedValue(&htim2,TIM_CHANNEL_1);TIM2-&…...
智能协同:数据集成平台与DeepSeek驱动的数据分析与智能调度革新
前言 企业面临着海量数据的挑战与机遇。如何高效地整合多源数据、精准分析并智能决策,成为企业提升竞争力的关键。本文解析轻易云数据集成平台与DeepSeek技术结合在数据分析和智能调度方面的创新应用,揭示其为企业带来的高效、智能与精准的业务价值。 …...
Mybatis高级(动态SQL)
目录 一、动态SQL 1.1 数据准备: 1.2 <if>标签 1.3<trim> 标签 1.4<where>标签 1.5<set>标签 1.6 <foreach>标签 1.7<include> 标签 一、动态SQL 动态SQL是Mybatis的强⼤特性之⼀,能够完成不同条件下不同…...
申论对策建议类【2022江苏B卷第一题“如何开展网络直播”】
材料: 近年来,公安交管部门通过网络直播,将执法过程和执法细节以视频形式呈现在公众面前,吸引“围观”、组织点评,让执法过程变成一堂生动的法治公开课。 “各位网友,大家好!这里是‘全国交通…...
蓝耘智算携手DeepSeek,共创AI未来
🌟 各位看官号,我是egoist2023! 🌍 种一棵树最好是十年前,其次是现在! 🚀 今天来学习如何通过蓝耘智算使用DeepSeek R1模型 👍 如果觉得这篇文章有帮助,欢迎您一键三连&a…...
FFmpeg源码:url_find_protocol函数分析
一、url_find_protocol函数的定义 url_find_protocol函数定义在FFmpeg源码(本文演示用的FFmpeg源码版本为7.0.1)的源文件libavformat/avio.c中: static const struct URLProtocol *url_find_protocol(const char *filename) {const URLProt…...
3D与2D机器视觉机械臂引导的区别
3D与2D机器视觉在机械臂引导中的主要区别如下: 数据维度 2D视觉:仅处理平面图像,提供X、Y坐标信息,无法获取深度(Z轴)数据。 3D视觉:处理三维空间数据,提供X、Y、Z坐标及物体的姿态…...
C# 添加图标
一、前言 为应用程序添加图标是优化用户界面、提升应用辨识度的重要操作。合适的图标能帮助用户快速识别和区分不同应用,增强应用的易用性和专业性。 本指南旨在为你提供详细、易懂的步骤,教你如何为应用程序的窗体添加图标。从图标素材的获取到具体的…...
基于 Python 和 Django 的北极星招聘数据可视化系统(附源码,部署)
博主介绍:✌程序员徐师兄、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取源码联系🍅 👇🏻 精彩专栏推荐订阅👇…...
基于STM32、HAL库、MB85RC16PNF(I2C接口)驱动程序设计
一、概述: MB85RC16PNF 是富士通推出的16Kbit(2K x 8位)FRAM(铁电随机存取存储器),具有非易失性、高读写速度和低功耗特性,常用于数据存储。 二、硬件连接: MB85RC16PNF通过I2C接口与STM32L4XX通信,典型连接如下: VDD:3.3V VSS:GND SDA:I2C数据线 SCL:I2C时钟线…...
【产品推介】可驱动5A负载的降压型DC/DC转换器XBL1663
一、产品简介 采用ESOP-8封装的XBL1663最大可输出5A电流 芯伯乐XBL1663是一款专为降压型DC/DC转换器设计的单片集成电路,具有高转换效率、恒定开关频率工作的特点。内置功率 MOSFET可在 4.5 V-40V 输入电源上实现 5A 峰值输出电流,并具有出色的负载和线…...
20.【线性代数】——坐标系中,平行四边形面积=矩阵的行列式
三 坐标系中,平行四边形面积矩阵的行列式 定理验证 定理 在坐标系中,由向量(a,b)和向量(c,d)组成平行四边形的面积 矩阵 [ a b c d ] \begin{bmatrix} a&b\\ c&d \end{bmatrix} [acbd]的行列式,即&#x…...
数据库知识速记:事物隔离级别
数据库知识速记:事物隔离级别 一、什么是事物隔离级别? 事物隔离级别(Transaction Isolation Levels)指的是在数据库管理系统中,不同事物之间在访问共享数据时的隔离程度。隔离级别不仅影响数据的读取和写入行为&…...
重构测试项目为spring+springMVC+Mybatis框架
重构测试项目为springspringMVCMybatis框架 背景 继上次将自动化测试时的医药管理信息系统项目用idea运行成功后,由于项目结构有些乱,一部分代码好像也重复,于是打算重新重构以下该项目,这次先使用springspringMVCMybatis框架 …...
如何使用OPENAI的Whisper功能进行音频字母提取功能
首先你可以使用 Python 中的 requests 库来下载该音频文件,然后通过 open() 打开该文件并传递给 OpenAI Whisper API。 完整代码如下: 安装需要的库: pip install openai requests Python 代码: OPENAI_API_KEY "your o…...
DFS算法篇:理解递归,熟悉递归,成为递归
1.DFS原理 那么dfs就是大家熟知的一个深度优先搜索,那么听起来很高大尚的一个名字,但是实际上dfs的本质就是一个递归,而且是一个带路径的递归,那么递归大家一定很熟悉了,大学c语言课程里面就介绍过递归,我…...
2025java常见面试题第一弹
1. Java中的HashMap和Hashtable有什么区别? 答案: 线程安全性: HashMap是线程不安全的,适合单线程环境。如果在多线程环境下使用,可能会出现数据不一致的问题。 Hashtable是线程安全的,内部方法通过synch…...
JMeter工具介绍、元件和组件的介绍
Jmeter功能概要 JDK常用文件目录介绍 Bin目录:存放可执行文件和配置文件 Docs目录:是Jmeter的API文档,用于开发扩展组件 printable_docs目录:用户帮助手册 lib目录:存放JMeter依赖的jar包和用户扩展所依赖的Jar包…...
机舱卫生和空气质量改善
公共卫生挑战:在密闭空间内控制病原体 由于公共交通等密闭空间内的人员密度很高,因此保持良好的空气质量至关重要。有效的通风系统在循环新鲜空气和降低空气中病原体和污染物的浓度方面起着关键作用。使用高效微粒空气 (HEPA) 过滤…...
springBoot之环境变量
springboot 在new SpringBootApplication()时, 会扫描所有的spring.factory; 它会给每个接口当做group,所有实现类为List当做value,形成map; group -> List 系统属性 java的相关属性 系统环境属性,指的是操作系统相关的配置 每个配置对应一个contro…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
srs linux
下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...
相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...
多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!
简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求,并检查收到的响应。它以以下模式之一…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
Python+ZeroMQ实战:智能车辆状态监控与模拟模式自动切换
目录 关键点 技术实现1 技术实现2 摘要: 本文将介绍如何利用Python和ZeroMQ消息队列构建一个智能车辆状态监控系统。系统能够根据时间策略自动切换驾驶模式(自动驾驶、人工驾驶、远程驾驶、主动安全),并通过实时消息推送更新车…...
代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...
作为测试我们应该关注redis哪些方面
1、功能测试 数据结构操作:验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化:测试aof和aof持久化机制,确保数据在开启后正确恢复。 事务:检查事务的原子性和回滚机制。 发布订阅:确保消息正确传递。 2、性…...
springboot 日志类切面,接口成功记录日志,失败不记录
springboot 日志类切面,接口成功记录日志,失败不记录 自定义一个注解方法 import java.lang.annotation.ElementType; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target;/***…...
