2024.7.12单片机PWM

遇到了一个光标变成下划线的问题:

Keil5光标变下划线,变回来的方法_keil5光标是下划线-CSDN博客

这里是用了输入捕获(IC:input capture),输出比较(OC:Output Compare)区别

学到这里是以为,首先输入捕获是捕获外界的数字信号,如果是模拟信号,可能需要加信号处理的模块,变成数字信号再加以处理计算。输出比较,是比较产生输出。

#include "stm32f10x.h"                  // Device header
#include "Pwm.h" void IC_Init(void)
{RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//ÕâÀïÅäÖóÉÁËTIM2ÁËRCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);GPIO_InitTypeDef GPIO_InitStructure;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU;//ÉÏÀ­ÊäÈëδÉèÖÃGPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOA, &GPIO_InitStructure);TIM_InternalClockConfig(TIM3);//¶¨Ê±Æ÷δ¸ü¸ÄΪ3TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;TIM_TimeBaseInitStructure.TIM_ClockDivision = TIM_CKD_DIV1;TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInitStructure.TIM_Period = 65536-1;//×Ô¶¯ÖØ×°¼Ä´æÆ÷£¬ARR£¬ÎÊÌâÔÚÕâÀïTIM_TimeBaseInitStructure.TIM_Prescaler = 72-1;//Ô¤·ÖƵÆ÷£¬¶¨Ê±ÆµÂÊ=CK_PSC¡¾72M¡¿/PSC+1/ARR+1£¬¶¨Ê±Ê±¼äΪ1.TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;//Öظ´¼ÆÊýÆ÷µÄÖµTIM_TimeBaseInit(TIM3,&TIM_TimeBaseInitStructure);TIM_ICInitTypeDef TIM_ICInitStructure;TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;TIM_ICInitStructure.TIM_ICFilter = 0xF;TIM_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;TIM_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;TIM_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI;TIM_PWMIConfig(TIM3,&TIM_ICInitStructure);//	TIM_ICInit(TIM3,&TIM_ICInitStructure);TIM_SelectInputTrigger(TIM3,TIM_TS_TI1FP1);//Ñ¡´íͨµÀÁËTIM_SelectSlaveMode(TIM3,TIM_SlaveMode_Reset);TIM_Cmd(TIM3,ENABLE);	}uint32_t IC_GetFreq(void)//ÕâÀïд³ÉÁËGetcaptureÁË£¬ºóÃæÖ÷º¯ÊýÀïûÓгöÏÖGetfreq
{return 1000000/(TIM_GetCapture1(TIM3)+1);
}uint32_t IC_GetDuty(void)//δ¼Óvoid
{return (TIM_GetCapture2(TIM3)+1)*100/(TIM_GetCapture1(TIM3)+1);
}

打通这些配置单元,最后两个CCR1和CCR2的单元,CCR2/CCR1就是得到的占空比,其中CCR2计数的是前一个上升沿到下一个上升沿所需要的计数,CCR1测量的是一整个周期的计数。

由0<CCR2/CCR1<1,而我们是瞬时的配置,会出现CCR缺1的情况,因而加1。

我们将其配置成两位数,乘以100得到百分比。

资料来源:江协科技[6-6] 输入捕获模式测频率&PWMI模式测频率占空比_哔哩哔哩_bilibili

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

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

相关文章

解析DDD开发框架Axon

在微服务架构盛行的当下&#xff0c;领域驱动设计&#xff08;DDD&#xff09;也得到了崭新的发展。在DDD中包含了聚合、领域事件等核心概念&#xff0c;也需要引入CQRS、事件溯源等架构模式。对于开发人员而言&#xff0c;如何简单而高效的实现这些核心概念和架构模式是一大痛…

《简历宝典》13 - 简历中“项目经历”,内功学习 - 下篇

这一小节呢&#xff0c;我们继续说简历中 “项目经历” 的一些内功心法。因为项目经历比较核心&#xff0c;所以说完了&#xff0c;内功呢&#xff0c;我们会着重说一下 实战部分。 目录 1 所用技术的考虑 2 自我成长的突出 3 综合使用STAR法则 4 小节 1 所用技术的考虑 …

【利用Selenium+autoIt实现文件上传】

利用Selenium+autoIt实现文件上传 利用Selenium+autoIT实现文件上传autoIt脚本制作转换成exe文件java代码运行部分利用Selenium+autoIT实现文件上传 当你看到这篇文章时,证明你遇到了和我一样的难题。正常情况下我们利用selenium完全可以实现表单的提交和文件上传等操作。但当…

集群节点状态异常的解决方式

文章目录 集群节点状态异常的解决方式问题概述解决方式1.关闭所有服务2.对所有集群删除Hadoop相关文件2.1 删除Hadoop系统运行时创建的临时数据和文件2.2 删除Hadoop的数据文件 3.重新对Hadoop节点进行初始化和启用4.重启服务&#xff0c;检查节点状态 集群节点状态异常的解决方…

软件测试工作流程

1、目的 有效的保证软件质量;有效的制定不同测试类型(软件系统测试、音频主观性测试、专项测试、自动化测试、性能测试、用户体验测试)的软件测试计划;按照计划进行测试,发现软件中存在的问题;对软件中已经解决的问题进行有效的验证;判定测试过程和问题验证的有效性。2、…

Ext JS适用于哪些开发场景?

Ext JS是一个强大的JavaScript类库&#xff0c;它主要用于创建前端用户界面&#xff0c;是一个与后台技术无关的前端Ajax框架。基于其丰富的功能和特点&#xff0c;Ext JS适用于多种开发场景&#xff0c;主要包括以下几个方面&#xff1a; 1、富客户端AJAX应用 RIA&#xff08…

PostgreSQL(二十一)clog的作用与管理

一、CLOG的概念及作用 1、基础概念 &#xff08;1&#xff09;CLOG&#xff1a;记录事务号的状态&#xff0c;可以用其判断行的可见性。每个事务状态占用两个bit位。 tip&#xff1a;事务的状态有4种&#xff1a;IN_PROGRESS&#xff0c;COMMITTED&#xff0c;ABORTED和SUB_…

如何应对AI发展下的伦理挑战

目录 1.概述 2.构建可靠的AI隐私保护机制 2.1. 最小化数据收集 2.2. 数据去标识化 2.3. 加密技术 2.4. 分布式学习和边缘计算 2.5. 强化用户控制权 2.6. 独立审计和合规性检查 2.7. 持续教育和培训 2.8.小结 3.确保AI算法的公正性和透明度 3.1.增强AI决策透明度的方…

第一百五十九节 Java IO教程 - Java输入流、文件输入流、缓冲输入流、推回输入流

Java IO教程 - Java输入流 抽象基本组件是InputStream类。 InputStream|--FileInputStream |--ByteArrayInputStream |--PipedInputStream|--FilterInputStream|--BufferedInputStream |--PushbackInputStream |--DataInputStream |--ObjectInputStream我们有FileInputStream&…

【C++】——类和对象(中)

文章目录 类的默认成员函数构造函数析构函数拷贝构造函数赋值运算符重载运算符重载 const成员函数 类的默认成员函数 在C中&#xff0c;类&#xff08;class&#xff09;可以拥有多种成员函数&#xff0c;其中一些成员函数在类定义中没有显式声明时&#xff0c;编译器会隐式地…

JSON传输二进制

0x01 结论 JSON无法传输二进制, 若需要在JSON中传输二进制, 可以对二进制进行编码: 1. HEX To HexString 2. base64编码 若直接传送二进制, 其中无法被UTF-8解码的字节将被替换. Base64将会扩大30%的体积. 0x00 起因 我使用JSON提交了包含二进制的报文, 解析时发现很多字…

Windows上LabVIEW编译生成可执行程序

LabVIEW项目浏览器(Project Explorer)中的"Build Specifications"就是用来配置项目发布方法的。在"Build Specifications"右键菜单中选取"New"&#xff0c;可以看到程序有几种不同的发布方法&#xff1a;Application(EXE)、Installer、.Net Inte…

DFS和BFS(c++)

TOC 深度优先遍历dfs Depth First Search, 简称 DFS图解链接: link对每一个分支路径深入到不能再深入为止二叉树的深度优先遍历特殊&#xff0c;分为先序遍历、中序遍历、后序遍历先序遍历&#xff0c;对任一子树&#xff0c;先访问根&#xff0c;然后左子树&#xff0c;最后…

C++第七弹 -- C/C++内存管理

目录 前言一. C/C内存分布二. C语言中动态内存管理方式三. C中动态内存管理四. operator new与operator delete函数五. new和delete的实现原理1.内置类型2. 自定义类型 六. 定位new表达式(placement-new)七. 常见面试题总结 前言 在C/C编程中&#xff0c;内存管理是至关重要的…

超详细Midjourney国际版注册使用全流程

众所周知&#xff0c;目前Midjourney AI绘画的国内版本有很多种&#xff0c;甚至微信、浏览器插件等都有&#xff0c;眼花缭乱&#xff0c;使用门槛低&#xff0c;无需特殊网络手段即可访问使用。 不过&#xff0c;根据一些用户的反馈&#xff0c;尽管国内的那些版本在注册和充…

软件测试——测试用例

工作职责&#xff1a; 1.负责产品系统测试&#xff0c;包括功能测试、性能测试、稳定性测试、用户场景测试、可靠性测试等。 2.负责测试相关文档的编写&#xff0c;包括测试计划、测试用例、测试报告等。 3.负责自动化测试框架、用例的维护。 岗位要求&#xff1a; 1.熟练…

ng-container、‌ng-template 和 ng-content 区别

ng-container、‌ng-template 和 ng-content 都是 Angular 中用于处理和组织视图的工具&#xff0c;‌但它们各自具有不同的用途和行为。‌ ng-container&#xff1a;‌ 是一个虚拟的 HTML 容器&#xff0c;‌本身不会在最终渲染的 DOM 中创建任何实际的元素。‌它提供了一个包…

ref 和 reactive 区别

在Vue 3中&#xff0c;ref和reactive都是用于创建响应式数据的API&#xff0c;但它们之间存在一些关键的区别。以下是ref和reactive的主要区别&#xff1a; 1. 数据类型处理 ref&#xff1a;主要用于定义基本类型的数据&#xff08;如字符串、数字、布尔值等&#xff09;以及…

高阶面试-mongodb

mongodb的特点&#xff0c;为什么使用他 nosql数据库&#xff0c;前端到后端到数据库&#xff0c;都是json&#xff0c;无模式&#xff0c;数据模型发生变更&#xff0c;不需要强制更新表结构&#xff0c;可以快速实现需求迭代。 天生分布式&#xff0c;高可用&#xff0c;处…

人工智能与伦理挑战:多维度应对策略

人工智能技术近年来取得了迅猛发展&#xff0c;广泛应用于医疗诊断、金融分析、教育辅助、自动驾驶等各个领域&#xff0c;极大地提升了生产效率和服务质量&#xff0c;推动了科技进步和商业创新。然而&#xff0c;伴随其普及和应用的泛滥&#xff0c;AI也带来了数据隐私侵犯、…