首页 > 其他分享 >2024.7.12单片机PWM

2024.7.12单片机PWM

时间:2024-07-14 20:25:48浏览次数:12  
标签:TimeBaseInitStructure TIM3 12 TIM void 单片机 GPIO PWM ICInitStructure

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

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);//¶¨Ê±Æ÷δ¸ü¸ÄΪ3
	
	TIM_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

标签:TimeBaseInitStructure,TIM3,12,TIM,void,单片机,GPIO,PWM,ICInitStructure
From: https://blog.csdn.net/2301_77143735/article/details/140384522

相关文章

  • CF1237F Balanced Domino Placements
    比较有意思的Counting,想到横竖两种骨牌的独立性就很好做了考虑如果枚举最后放了\(x\)块横着的骨牌,\(y\)块竖着的骨牌,直接考虑它们的摆放不方便,不妨转化一下在所有空余的行中,选择\(x+2y\)行,且满足其中有\(y\)对相邻的行;在所有空余的列中,选择\(2x+y\)列,且满足其中有\(x......
  • 2024 暑假友谊赛-热身2 (7.12)zhaosang
    E-Ehttps://vjudge.net/problem/AtCoder-diverta2019_b给你a,b,c,n就是问你有多少(ia+jb+k*c)等于n的答案i,j,k任意几个都可以为零两种思想,数据量比较小,那么可以三重循环+减枝,或者枚举两个变量算出第三个代码如下:第一种三重循环#include<bits/stdc++.h>usingnamespa......
  • 【重磅研究】跨越120年!美股龙头是如何崛起和衰落的
    美股龙头能崛起往往具备两大因素:一是在高速增长的行业中拥有先发优势,并能快速持续创新;其次,拥有强大的护城河。一旦他们丧失创新力、没办法维持护城河,或是遭遇严格的监管,都可能会让龙头企业走下神坛。美股在过去十八个月的主旋律都是大型科技股,无论“五巨头”还是“七姐妹,它们......
  • 算法学习day12(动态规划)
    一、不同的二叉搜索树二叉搜索树的性质:父节点比左边的孩子节点都大;比右边的孩子节点都小;由图片可知,dp[3]是可以由dp[2]和dp[1]得出来的。(二叉搜索树的种类和根节点的val有关)当val为1时,左边是一定没有节点的,因为左边的值都要比根节点小;只有右边会有n-val个节点。所以当va......
  • 关于51单片机LED板块的学习笔记
    首先看看常见LED灯的内部结构其次下面是MCU原理图上关于LED的部分右侧VCC代表正极,左接两组电阻,目的保护电路,然后是八个LED,左侧有P20到P27八个接口接到下图CPU的对应接口上。这是工作原理图CPU经过一系列的信号传输把信号以高低电平的形式传给LED,因为LED右端始终接正极V......
  • lgP1253 扶苏的问题
    给定长度为n的序列A,有如下3种操作:1lrx,将区间[l,r]中的每个数都修改为x。2lrx,将区间[l,r]中的每个数都加上x。3lr,查询区间[l,r]内的最大值。分析:设置2个懒标记,先处理赋值标记,再处理增加标记。#include<bits/stdc++.h>usingllong=longlong;constllonginf=......
  • SG90舵机介绍与PWM驱动代码
    目录舵机简介SG90参数工作原理舵机接线驱动方式代码示例Servo.hServo.cmain.c360°舵机PWM控制以180°SG90舵机为例学习舵机舵机简介 SG90舵机是一种位置(角度)伺服的驱动器,适用于那些需要角度不断变化并可以保持的控制系统。伺服(Servo)是ServoMechanism一词的......
  • 2024.7.12 模拟赛
    模拟赛T1挂\(70pts\),T2\(\mathbb{AC}\)力挽狂澜,T3暴力爆零,T4\(5min=30pts\)。T1CowTollPathsG弗洛伊德,跑的过程记最大点权。注意有后效性,需要迭代一下。按点权排序后再跑可以不用迭代,因为一定会先更新小的,再更新大的。注意是:变量名别写错???code#include<bits/st......
  • mongoDB 报错 MongoNetworkError: connect ECONNREFUSED 127.0.0.1:27017 : 一个可行的
    今天启用mongoshell时发现报错如下:尝试数据指令mongod启动服务器也没有作用,上网查询解决方案后发现是没有在service里面启动mongodb服务,启动该服务后再键入mongosh命令即可正常运行mongoshell。具体操作如下:STEP1:win+R➡️输入services.msc➡️确定 STEP2:找到MongoD......
  • 7.12考试总结
    T1动态询问这个题主要考察快速排序求第k小O(n)的时间复杂度完成的方法主要错误原因在于,在一些情况下x与y并不连续,中间可能会各一个数,所以它的k需要注意这道在这个点上卡了很久,大概花费了1h左右,但感觉应该可以更快的解决,主要在于那道题没学好,一直记了一个错误的算法T2财富计算......