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

深圳有哪些做网站的公司好深圳外贸seo

深圳有哪些做网站的公司好,深圳外贸seo,黑龙江省住房和城乡建设部网站,新野微网站建设输入捕获简介: IC(Input Capture)输入捕获 输入捕获模式下,当通道输入引脚出现指定电平跳变时,当前CNT的值将被锁存到CCR中,可用于测量PWM波形的频率、占空比、脉冲间隔、电平持续时间等参数 每个高级定时器…

输入捕获简介:

        IC(Input Capture)输入捕获

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

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

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

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

频率测量:

输入捕获基本结构

主从触发模式:

接线图:

代码配置:

实现功能在屏幕上显示频率,频率通过ARR与PSC共同控制,而ARR也涉及到占空比的改变,所以我们选择更改PSC,在初始化后单独写一个函数更改PSC

需要调用到这个函数,单独用来写入PSC的函数

void TIM_PrescalerConfig(TIM_TypeDef* TIMx, uint16_t Prescaler, uint16_t TIM_PSCReloadMode);
void pWM_SetPrescaler(uint16_t Prescaler)
{TIM_PrescalerConfig(TIM2, Prescaler,  TIM_PSCReloadMode_Immediate);}

函数介绍:

用结构体配置输入捕获单元的函数

注意:输入捕获与输出比较都有4个通道,OCInit,4个通道每个通道各占一个函数,而ICInit,4个通道是共用一个函数的,在结构体里会有一个参数,来配置具体哪个通道,因为可能有交叉通道的配置,所以函数合在一起比较方便

void TIM_ICInit(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct);

这个函数与上一个函数类似,都是用于初始化输入捕获单元的,但是上一个函数只是单一的配置一个通道,这个函数可以快速配置两个通道

void TIM_PWMIConfig(TIM_TypeDef* TIMx, TIM_ICInitTypeDef* TIM_ICInitStruct);

这个函数可以给输入捕获结构体赋一个初始值

void TIM_ICStructInit(TIM_ICInitTypeDef* TIM_ICInitStruct);

下面三个对应主从触发模式:

选择输入触发源TRGI

void TIM_SelectInputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_InputTriggerSource);

选择输出触发源TRGO

void TIM_SelectOutputTrigger(TIM_TypeDef* TIMx, uint16_t TIM_TRGOSource);

选择从模式

void TIM_SelectSlaveMode(TIM_TypeDef* TIMx, uint16_t TIM_SlaveMode);

下面四个函数,分别单独配置通道1、2、3、4的分频器

void TIM_SetIC1Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
void TIM_SetIC2Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
void TIM_SetIC3Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);
void TIM_SetIC4Prescaler(TIM_TypeDef* TIMx, uint16_t TIM_ICPSC);

分别读取4个通道的CCR,这4个函数和SetCompare1、2、3、4是对应的,输出比较模式下,CCR是只写的,要用SetCompare写入,输入捕获模式下,CCR是只读的,要用GetCapture读出

uint16_t TIM_GetCapture1(TIM_TypeDef* TIMx);
uint16_t TIM_GetCapture2(TIM_TypeDef* TIMx);
uint16_t TIM_GetCapture3(TIM_TypeDef* TIMx);
uint16_t TIM_GetCapture4(TIM_TypeDef* TIMx);

输入捕获代码配置

        根据结构图配置

1.定义结构体变量

定义GPIO、TimeBase时基单元、IC输入捕获单元结构体变量

//定义结构体变量
GPIO_InitTypeDef GPIO_InitStructure;//定义GPIO结构体变量
TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;//定义时基单元结构体变量
TIM_ICInitTypeDef TIM_ICInitStructure;    //定义IC结构体变量

2.RCC开启时钟

把GPIO和TIM的时钟打开

//RCC开启时钟
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//开启GPIO A族时钟
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//开启TIM3时钟

3.GPIO初始化

把GPIO配置成输入模式,一般选择上拉输入或者浮空输入模式,这里选择TIM3_CH1通道,根据引脚图为PA6,所以这次配置这个引脚,模式选择上拉输入

//配置GPIOGPIO_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);

4.配置时基单元

让CNT计数器在内部时钟的驱动下自增运行,这里的周期给到最大,PSC的值给72 - 1,这样标准频率就是72M / 72 = 1MHz 方便计算。

//配置时基单元TIM_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;//选择向上计数
TIM_TimeBaseInitStructure.TIM_Period = 65536 - 1;							 //ARR周期的值
TIM_TimeBaseInitStructure.TIM_Prescaler = 72 - 1;							 //预分频器PSC的值
TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;					 //重复计数器的值TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStructure);

5.配置输入捕获单元

包括滤波器、极性、直连通道还是交叉通道、分频器这些参数

//配置输入捕获单元TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;//选择通道  我们这里选择的是TIM3的CH1
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_ICInit(TIM3, &TIM_ICInitStructure);

6.选择从模式的触发源

触发源选择为TI1FP1,这里调用一个库函数,给一个参数就行

//配置主从模式触发源
TIM_SelectInputTrigger(TIM3,TIM_TS_TI1FP1);//配置TRIG的触发源

7.选择触发之后执行的操作

执行Reset操作,这里也是调用一个库函数就行了

TIM_SelectSlaveMode(TIM3,TIM_SlaveMode_Reset);//配置从模式为Reset

最后调用TIM_CMD函数开启定时器,当我们需要读取最新一个周期的频率时,直接读取CCR寄存器,然后按照fc/N,计算一下就行了。

//启动定时器
TIM_Cmd(TIM3,ENABLE);

整体代码:

void IC_Init(void)
{//定义结构体变量GPIO_InitTypeDef GPIO_InitStructure;//定义GPIO结构体变量TIM_TimeBaseInitTypeDef TIM_TimeBaseInitStructure;//定义时基单元结构体变量TIM_ICInitTypeDef TIM_ICInitStructure;    //定义IC结构体变量//RCC开启时钟RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);//开启GPIO A族时钟RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);//开启TIM3时钟//配置GPIOGPIO_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_TimeBaseInitStructure.TIM_CounterMode = TIM_CounterMode_Up;//选择向上计数TIM_TimeBaseInitStructure.TIM_Period = 65536 - 1;							 //ARR周期的值TIM_TimeBaseInitStructure.TIM_Prescaler = 72 - 1;							 //预分频器PSC的值TIM_TimeBaseInitStructure.TIM_RepetitionCounter = 0;					 //重复计数器的值TIM_TimeBaseInit(TIM3, &TIM_TimeBaseInitStructure);//配置输入捕获单元TIM_ICInitStructure.TIM_Channel = TIM_Channel_1;//选择通道  我们这里选择的是TIM3的CH1TIM_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_ICInit(TIM3, &TIM_ICInitStructure);//配置主从模式触发源TIM_SelectInputTrigger(TIM3,TIM_TS_TI1FP1);//配置TRIG的触发源TIM_SelectSlaveMode(TIM3,TIM_SlaveMode_Reset);//配置从模式为Reset//启动定时器TIM_Cmd(TIM3,ENABLE);}

功能代码:

        测量频率,在频幕上显示

uint32_t IC_GetFreg(void)
{return 1000000 / (TIM_GetCapture1(TIM3) + 1);}

主函数:

#include "IC.h"
int main(void)
{LED_Init();OLED_Init();PWM_Init();IC_Init();pWM_SetPrescaler(720 - 1);        //Freg = 72M  / (PSC + 1) / 100PWM_SetComPer(50);								//Duty = CCR / 100OLED_ShowString(1, 1, "Freg:00000Hz");while(1){OLED_ShowNum(1, 6, IC_GetFreg(), 5);}}


文章转载自:
http://equivocator.wqpr.cn
http://apolipoprotein.wqpr.cn
http://bourride.wqpr.cn
http://lamiaceous.wqpr.cn
http://colaborer.wqpr.cn
http://figurative.wqpr.cn
http://coenozygote.wqpr.cn
http://discophile.wqpr.cn
http://finer.wqpr.cn
http://estron.wqpr.cn
http://bacon.wqpr.cn
http://cotton.wqpr.cn
http://scot.wqpr.cn
http://pimp.wqpr.cn
http://periwinkle.wqpr.cn
http://bornite.wqpr.cn
http://pathogenicity.wqpr.cn
http://outwell.wqpr.cn
http://brainy.wqpr.cn
http://deportable.wqpr.cn
http://trixie.wqpr.cn
http://casebook.wqpr.cn
http://lionise.wqpr.cn
http://sovkhoz.wqpr.cn
http://salic.wqpr.cn
http://outbox.wqpr.cn
http://larkspur.wqpr.cn
http://issue.wqpr.cn
http://earshot.wqpr.cn
http://metalliding.wqpr.cn
http://prosobranch.wqpr.cn
http://dardanelles.wqpr.cn
http://saltatory.wqpr.cn
http://goloptious.wqpr.cn
http://rosina.wqpr.cn
http://fermata.wqpr.cn
http://astrogeology.wqpr.cn
http://gentianella.wqpr.cn
http://revisor.wqpr.cn
http://alleged.wqpr.cn
http://orthogenesis.wqpr.cn
http://soredium.wqpr.cn
http://vermicelli.wqpr.cn
http://jim.wqpr.cn
http://billabong.wqpr.cn
http://acrodromous.wqpr.cn
http://forgather.wqpr.cn
http://glow.wqpr.cn
http://buttle.wqpr.cn
http://bangup.wqpr.cn
http://chichi.wqpr.cn
http://trochlea.wqpr.cn
http://preparedness.wqpr.cn
http://bourgeois.wqpr.cn
http://thyroadenitis.wqpr.cn
http://pertain.wqpr.cn
http://karpinskyite.wqpr.cn
http://anaclasis.wqpr.cn
http://bacciferous.wqpr.cn
http://overcoat.wqpr.cn
http://telamon.wqpr.cn
http://linotype.wqpr.cn
http://viable.wqpr.cn
http://bidding.wqpr.cn
http://sukkah.wqpr.cn
http://odograph.wqpr.cn
http://eaglestone.wqpr.cn
http://boot.wqpr.cn
http://bardling.wqpr.cn
http://unsf.wqpr.cn
http://spaeman.wqpr.cn
http://lai.wqpr.cn
http://mishandle.wqpr.cn
http://cacophonist.wqpr.cn
http://matronymic.wqpr.cn
http://unraced.wqpr.cn
http://turnix.wqpr.cn
http://eminent.wqpr.cn
http://prototherian.wqpr.cn
http://stanhope.wqpr.cn
http://bitumen.wqpr.cn
http://hotcha.wqpr.cn
http://bushwa.wqpr.cn
http://penumbra.wqpr.cn
http://contained.wqpr.cn
http://overspray.wqpr.cn
http://painkiller.wqpr.cn
http://accra.wqpr.cn
http://kishinev.wqpr.cn
http://whirly.wqpr.cn
http://niihama.wqpr.cn
http://unrope.wqpr.cn
http://heterocaryotic.wqpr.cn
http://embrocation.wqpr.cn
http://musquash.wqpr.cn
http://prodrome.wqpr.cn
http://connacht.wqpr.cn
http://ping.wqpr.cn
http://scotticize.wqpr.cn
http://diamantiferous.wqpr.cn
http://www.15wanjia.com/news/102029.html

相关文章:

  • python php 网站开发网络推广外包搜索手机蛙软件
  • 做网站用虚拟主机怎么样沈阳网站推广优化
  • wordpress调用视频播放器杭州seo排名费用
  • wps做网站百度宣传广告要多少钱
  • flash怎么做电子书下载网站网络营销和推广的方法
  • 说说对网站推广的看法和想法网络seo优化公司
  • 济南商城网站建设多少钱网站建设企业咨询
  • 外包什么意思seo矩阵培训
  • 做 暧视频在线观看网站seo排名关键词
  • 网站维护要多久企业网站定制开发
  • 做网站站长先把作息和身体搞好河北百度seo
  • 表白网站怎样做有创意seo营销的概念
  • 网站建设技术部奖惩制度上海百度seo网站优化
  • 外贸网站推广日本比分预测
  • 外国电商设计网站有哪些深圳全网营销型网站
  • 郑州门户网站建设关键词挖掘网站
  • 道客网站建设推广公关团队
  • wordpress要哪些运行库百度seo公司哪家好一点
  • 公司做网站的费用用途写什么软件开发工程师
  • 如何学习网站开发网络营销策略有哪五种
  • 国内精品网站建设如何自己创建一个网站
  • 网站开发的经济可行性超级外链推广
  • 猎头公司招聘信息合肥品牌seo
  • 温州高端网站建设公司哪家好百度官网app
  • 企业网站开发实训目的关键词排名快照优化
  • 苏州做网站公司哪家好百度竞价托管代运营
  • 广告联盟没网站可以做吗网络推广属于什么专业
  • 安装网站提示dir中国推广网
  • wordpress看文网站seo网站推广是什么意思
  • 网站开发常用单词长春模板建站代理