当前位置: 首页 > news >正文

网站什么英文字体厦门市建设局思明建设分局官方网站

网站什么英文字体,厦门市建设局思明建设分局官方网站,深圳教育网站建设,wordpress怎么首页添加板块一、简介 IC输入捕获 输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存在CCR中,可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数 每个高级定时器和通用定时器都拥有4个输入捕获通道 可配置为PWMI模…

一、简介

IC输入捕获

输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存在CCR中,可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数

每个高级定时器和通用定时器都拥有4个输入捕获通道

可配置为PWMI模式,同事测量频率和占空比

可配合主从触发模式。实现硬件全自动测量

二、工程代码

项目一:

程序现象:自己“测”自己;输入捕获模式测频率

配置流程:

        1.RCC开启时钟

        2.GPIO初始化,配置为输入模式

        3.配置时基单元

        4.配置输入捕获单元(捕获通道、捕获方式、输入捕获预分频器)

        5.选择从模式触发源

        6.触发之后进行的操作

        7.开始定时器

接线:一根杜邦线一端接在单片机的PA6,另一端接在PA0

 这个是输入捕获的代码,输出波形的代码在在我之前写的TIM输出比较的文章里面pwm_led.c里面;

pwm_ic.c

#include "stm32f10x.h"  // STM32F10x外设库头文件
#include "pwm_ic.h"     // PWM控制相关头文件
#include "delay.h"       // 延时函数头文件// 按键初始化函数
void PWM_IC_Init(void)
{// 定义定时器基础结构体和输出比较结构体TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; GPIO_InitTypeDef GPIO_InitStructure;  // GPIO初始化结构体TIM_ICInitTypeDef TIM_ICInitStruct;   // 定时器输入捕获初始化结构体// 使能TIM3和GPIOA的时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);  // 使能定时器TIM3时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);  // 使能GPIOA时钟// 配置GPIOA的引脚6为定时器的输入引脚(PWM输入)GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_6;           // 配置GPIOA的Pin6GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;    // 配置引脚的速度为50MHzGPIO_InitStructure.GPIO_Mode  = GPIO_Mode_IPD;       // 配置为输入下拉模式GPIO_Init(GPIOA, &GPIO_InitStructure);               // 初始化GPIOA的Pin6引脚/* 配置时钟源 */TIM_InternalClockConfig(TIM3);  // 选择TIM3为内部时钟源,若不调用此函数,TIM默认也是内部时钟// 配置定时器基本参数TIM_TimeBaseStructure.TIM_Period = 65535 - 1;              // 自动重载值,定时器的计数周期为65535,即计数从0到65534,周期为65535个时钟周期TIM_TimeBaseStructure.TIM_Prescaler = 72 - 1;              // 预分频器值,定时器时钟源被分频为72MHz / 72 = 1000000Hz,即定时器时钟频率为1MHzTIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;    // 时钟分割设置为1,表示不进行时钟分割,保持时钟完整性TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  // 计数模式设置为向上计数模式,从0计数到自动重载值(65535)TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;           // 重复计数器设置为0,不启用重复计数器,定时器只进行单次计数TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);            // 初始化定时器TIM3,应用上述配置// 配置定时器输入捕获参数TIM_ICInitStruct.TIM_Channel = TIM_Channel_1;               	// 使用TIM3的通道1TIM_ICInitStruct.TIM_ICSelection = TIM_ICSelection_DirectTI;  // 选择直接连接到TI1的输入信号TIM_ICInitStruct.TIM_ICPrescaler = TIM_ICPSC_DIV1;            // 输入捕获预分频器为1TIM_ICInitStruct.TIM_ICFilter = 0xF;                           // 输入滤波器设置为最大滤波值TIM_ICInitStruct.TIM_ICPolarity = TIM_ICPolarity_Rising;      // 上升沿触发输入捕获TIM_ICInit(TIM3, &TIM_ICInitStruct);                          // 初始化输入捕获// 配置触发器TIM_SelectInputTrigger(TIM3, TIM_TS_TI1FP1);  // 选择输入触发器为TIM3通道1的输入(TI1)TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Reset); // 配置为复位模式,作为从设备// 启动定时器TIM3TIM_Cmd(TIM3, ENABLE);  // 启动TIM3,使其开始计数并处理输入捕获}// 获取PWM频率的函数
u32 IC_GetFreq(void)
{// 计算PWM频率(单位为Hz),根据捕获到的输入信号周期return 1000000 / (TIM_GetCapture1(TIM3) + 1);  // 以微秒为单位进行计算
}

pwm_ic.h

#ifndef __PWM_IC_H
#define __PWM_IC_H#include "stm32f10x.h"                  
#include "sys.h"void PWM_IC_Init(void);
u32	IC_GetFreq(void);#endif

main.c


#include "stm32f10x.h"  // 设备相关头文件
#include "pwm_ic.h"     // PWM控制相关头文件
#include "delay.h"       // 延时相关头文件int main(){PWM_IC_Init();      // 初始化PWMdelay_init();    // 初始化延时函数/*使用PWM模块提供输入捕获的测试信号*/PWM_SetPrescaler(720 - 1);					//PWM频率Freq = 72M / (PSC + 1) / 100//这两个函数在之前输出比较文章中pwm_led.c里面PWM_SetCompare1(50);						//PWM占空比Duty = CCR / 100while(1){   IC_GetFreq(); }
}

项目二:

程序现象:PWMI模式测频率占空比

pwmi_ic.c

#include "stm32f10x.h"  // STM32F10x外设库头文件
#include "pwmi_ic.h"     // PWM控制相关头文件
#include "delay.h"       // 延时函数头文件// 按键初始化函数
void PWMI_IC_Init(void)
{// 定义定时器基础结构体和输出比较结构体TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; GPIO_InitTypeDef GPIO_InitStructure;  // GPIO初始化结构体TIM_ICInitTypeDef TIM_ICInitStruct;   // 定时器输入捕获初始化结构体// 使能TIM3和GPIOA的时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENABLE);  	// 使能定时器TIM3时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);  	// 使能GPIOA时钟// 配置GPIOA的引脚6为定时器的输入引脚(PWM输入)GPIO_InitStructure.GPIO_Pin  = GPIO_Pin_6;           		// 配置GPIOA的Pin6GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;    		// 配置引脚的速度为50MHzGPIO_InitStructure.GPIO_Mode  = GPIO_Mode_IPD;       		// 配置为输入下拉模式GPIO_Init(GPIOA, &GPIO_InitStructure);               		// 初始化GPIOA的Pin6引脚/* 配置时钟源 */TIM_InternalClockConfig(TIM3);  															// 选择TIM3为内部时钟源,若不调用此函数,TIM默认也是内部时钟// 配置定时器基本参数TIM_TimeBaseStructure.TIM_Period = 65535 - 1;              		// 自动重载值,定时器的计数周期为65535,即计数从0到65534,周期为65535个时钟周期TIM_TimeBaseStructure.TIM_Prescaler = 72 - 1;              		// 预分频器值,定时器时钟源被分频为72MHz / 72 = 1000000Hz,即定时器时钟频率为1MHzTIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;    		// 时钟分割设置为1,表示不进行时钟分割,保持时钟完整性TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  	// 计数模式设置为向上计数模式,从0计数到自动重载值(65535)TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;           		// 重复计数器设置为0,不启用重复计数器,定时器只进行单次计数TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure);            		// 初始化定时器TIM3,应用上述配置// 配置定时器输入捕获参数TIM_ICInitStruct.TIM_Channel = TIM_Channel_1;               		// 使用TIM3的通道1TIM_ICInitStruct.TIM_ICSelection = TIM_ICSelection_DirectTI;  	// 选择直接连接到TI1的输入信号TIM_ICInitStruct.TIM_ICPrescaler = TIM_ICPSC_DIV1;            	// 输入捕获预分频器为1TIM_ICInitStruct.TIM_ICFilter = 0xF;                          	// 输入滤波器设置为最大滤波值TIM_ICInitStruct.TIM_ICPolarity = TIM_ICPolarity_Rising;      	// 上升沿触发输入捕获TIM_ICInit(TIM3, &TIM_ICInitStruct);                          	// 初始化输入捕获//		    // 配置定时器输入捕获参数
//    TIM_ICInitStruct.TIM_Channel = TIM_Channel_2;               		// 使用TIM3的通道2
//    TIM_ICInitStruct.TIM_ICSelection = TIM_ICSelection_IndirectTI;  // 选择交叉输入到TI1的输入信号
//    TIM_ICInitStruct.TIM_ICPrescaler = TIM_ICPSC_DIV1;            	// 输入捕获预分频器为1
//    TIM_ICInitStruct.TIM_ICFilter = 0xF;                           	// 输入滤波器设置为最大滤波值
//    TIM_ICInitStruct.TIM_ICPolarity = TIM_ICPolarity_Falling;      	// 下降沿触发输入捕获
//    TIM_ICInit(TIM3, &TIM_ICInitStruct);  TIM_PWMIConfig(TIM3,&TIM_ICInitStruct);// 配置触发器TIM_SelectInputTrigger(TIM3, TIM_TS_TI1FP1); 								 			// 选择输入触发器为TIM3通道1的输入(TI1)TIM_SelectSlaveMode(TIM3, TIM_SlaveMode_Reset); 									// 配置为复位模式,作为从设备// 启动定时器TIM3TIM_Cmd(TIM3, ENABLE); 																						 // 启动TIM3,使其开始计数并处理输入捕获}// 获取PWM频率的函数
u32 IC_GetFreq(void)
{// 计算PWM频率(单位为Hz),根据捕获到的输入信号周期return 1000000 / (TIM_GetCapture1(TIM3) + 1);  // 以微秒为单位进行计算
}u32	IC_GetDuty(void)
{return (TIM_GetCapture2(TIM3) + 1)* 100 / (TIM_GetCapture1(TIM3) + 1);
}

pwmi_ic.h

#ifndef __PWMI_IC_H
#define __PWMI_IC_H#include "stm32f10x.h"                  
#include "sys.h"void PWMI_IC_Init(void);
u32	IC_GetFreq(void);
u32	IC_GetDuty(void);#endif

main.c

#include "stm32f10x.h"  // 设备相关头文件
#include "pwmi_ic.h"     // PWM控制相关头文件
#include "delay.h"       // 延时相关头文件int main(){PWMI_IC_Init();                              // 初始化PWMdelay_init();                               // 初始化延时函数/*使用PWM模块提供输入捕获的测试信号*/PWM_SetPrescaler(720 - 1);					//PWM频率Freq = 72M / (PSC + 1) / 100PWM_SetCompare1(50);						//PWM占空比Duty = CCR / 100while(1){   IC_GetFreq(); IC_GetDuty();}
}

http://www.15wanjia.com/news/193134.html

相关文章:

  • 视觉传达设计就业前景优化防疫措施+科学精准防控
  • 益阳公司官网韶关seo
  • 如何编辑网站内容为什么做网站能赚钱
  • 佛山网站推广优化网络规划设计师2023估分
  • 电子商务网站排名做网站多少钱西宁君博相约
  • 如何做网站在售产品分析企业中征码查询入口
  • 蘑菇丁毕业设计网站招聘信息设计
  • 中国建设招标网站做婚礼网站的公司简介
  • 北京网站托管公司永川区做网站
  • 大学生做爰网站深圳网站建设大全
  • 注册帐号宁波网站优化如何
  • 做网站常见程序wordpress 显示 当前位置
  • 深圳正规网站建设公司网站建设服务属于是什么费用
  • 电脑版网页游戏网站优化建设工作总结范文
  • 昆明官方网站建设wordpress怎么做链接
  • 泉州seo-泉州网站建设公司手机网页设计软件下载
  • 手机如何创造网站网站建设一般步骤
  • 做体育最好的网站广州市安全平台
  • 法律咨询微信网站建设买东西网站建设
  • 个人电脑做网站主机山东省建设监理协会网站打不开
  • 重庆制作手机网站贾汪网站建设
  • 个人网站开发项目报告网站建设公司北京华网天下实惠
  • 网站访客qq系统怎么寻找国外客户资源
  • 网站建设多钱云南营销网站建设
  • 如何做网站站长抚州北京网站建设
  • 大学网站策划方案广告设计与制作软件有哪些
  • 贵州省铜仁市城乡建设局网站数据分析方法
  • 广元建设公司网站各网站的网络联盟
  • 网站做跳转怎么做中铁建设集团有限公司西北分公司
  • flash手机网站制作网站建设补助