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

岳阳网站建设渠道关键词排名优化网站

岳阳网站建设渠道,关键词排名优化网站,淘宝客 wordpress网站,wordpress网站速度慢一、输入捕获介绍 在定时器中断实验章节中我们介绍了通用定时器具有多种功能,输入捕获就是其中一种。 STM32F1除了基本定时器TIM6和TIM7,其他定时器都具有输入捕获功能 。输入捕获可以对输入的信号的上升沿,下降沿或者双边沿进行捕获&#xf…

一、输入捕获介绍

        在定时器中断实验章节中我们介绍了通用定时器具有多种功能,输入捕获就是其中一种。 STM32F1除了基本定时器TIM6和TIM7,其他定时器都具有输入捕获功能 。输入捕获可以对输入的信号的上升沿,下降沿或者双边沿进行捕获,通常用于测量输入信号的脉宽、测量 PWM 输入信号的频率及占空比。
        输入捕获的工作原理比较简单,在输入捕获模式下,当相应的 ICx信号检测到跳变沿后,将使用捕获/比较寄存器(TIMx_CCRx)来锁存计数器的值。简单的说就是通过检测TIMx_CHx上的边沿信号,在边沿信号发生跳变(比如上升沿/下降沿)的时候,将当前定时器的值(TIMx_CNT)存放到对应的通道的捕获/比较寄存(TIMx_CCRx)里面,完成一次捕获。同时还可以配置捕获时是否触发中断/DMA 等。

         在stm32中文手册中有如下图(也就是通用定时器的结构图):

在通用定时器中,输入捕获主要用到以上部分,STM32的每个通用定时器都有4个输入捕获的通道,分别是TIMx_CH1、TIMx_CH2、TIMx_CH3、TIMx_CH4。我们可以在输入滤波器和边沿检测器中设置我们需要捕获的是上升沿还是下降沿,假设我们需要捕获上升沿,则当滤波器和边沿检测器捕获到上升沿后,CNT计数器中的值会加1,同时捕获/比较寄存器中会锁存计数器的值。

二、输入捕获配置步骤

接下来我们介绍下如何使用库函数对通用定时器的输入捕获进行配置 。这个也是在编写程序中必须要了解的。其实输入捕获和前面定时器中断一样也是通用定时器的一个功能,因此还是要用到定时器的相关配置函数,具体步骤如下:(定时器相关库函数在stm32f10x_tim.c和
stm32f10x_tim.h文件中)。
(1)使能定时器及端口时钟,并设置引脚复用器映射和引脚模式等(以PA0为例)
RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5,ENABLE);

其中需要将PA0端口进行复用,复用为TIM5的通道1,所以我们需要开启复用时钟,GPIOA时钟。

(2)初始化定时器参数,包含自动重装值,分频系数,计数方式等

voidTIM_TimeBaseInit(TIM_TypeDef*TIMx,TIM_TimeBaseInitTypeDef*TIM_TimeBaseInitStruct);

 (3)设置通用定时器的输入捕获参数,开启输入捕获功能

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

其中TIM_ICInitTypeDef结构体中的成员大致意思为:

typedef struct
{
uint16_t TIM_Channel; //通道
uint16_t TIM_ICPolarity; //捕获极性
uint16_t TIM_ICSelection;//映射
uint16_t TIM_ICPrescaler;//分频系数
uint16_t TIM_ICFilter; //滤波器长度
} TIM_ICInitTypeDef;
如果我们需要配置TIM5的通道1为输入捕获功能,并且为上升沿捕获。不分频、直接映射到TI,可以如下配置:

 TIM_ICInitTypeDef TIM_ICInitStructure;

TIM_ICInitStructure.TIM_Channel=TIM_Channel_1; //通道1
TIM_ICInitStructure.TIM_ICFilter=0x00; //滤波
TIM_ICInitStructure.TIM_ICPolarity=TIM_ICPolarity_Rising;//捕获
极性
TIM_ICInitStructure.TIM_ICPrescaler=TIM_ICPSC_DIV1; //分频系数
TIM_ICInitStructure.TIM_ICSelection=TIM_ICSelection_DirectTI;//
直接映射到TI1
TIM_ICInit(TIM5,&TIM_ICInitStructure);

 (4)开启捕获和定时器溢出(更新)中断

void TIM_ITConfig(TIM_TypeDef* TIMx, uint16_t TIM_IT, FunctionalState NewState);
TIM_ITConfig(TIM5,TIM_IT_Update|TIM_IT_CC1,ENABLE)

(5)设置定时器中断优先级,使能定时器中断通道 

 NVIC初始化库函数是NVIC_Init()

(6)编写定时器中断服务函数 

TIM5_IRQHandler
ITStatus TIM_GetITStatus(TIM_TypeDef* TIMx, uint16_t TIM_IT);
void TIM_ClearITPendingBit(TIM_TypeDef* TIMx, uint16_t TIM_IT);
TIM_SetCounter(TIM5,0); //定时器初值为0

(7)使能定时器 

 void TIM_Cmd(TIM_TypeDef* TIMx, FunctionalState NewState);

 下面有一个输入捕获大致代码(以判断但双击按键为例):

void Tim_Input_Capture(u16 per,u16 psc)
{GPIO_InitTypeDef  GPIO_InitStruct;TIM_TimeBaseInitTypeDef  TIM_TimeBaseInitStruct;TIM_ICInitTypeDef  TIM_ICInitStruct;NVIC_InitTypeDef  NVIC_InitStruct;/*1、打开外设时钟*/RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO , ENABLE);RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);/*2、配置GPIO*/GPIO_InitStruct.GPIO_Mode = GPIO_Mode_IPD;GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;GPIO_Init(GPIOA, &GPIO_InitStruct);/*3、配置定时器*/TIM_TimeBaseInitStruct.TIM_ClockDivision = TIM_CKD_DIV1;TIM_TimeBaseInitStruct.TIM_CounterMode = TIM_CounterMode_Up;TIM_TimeBaseInitStruct.TIM_Period = per;TIM_TimeBaseInitStruct.TIM_Prescaler = psc;TIM_TimeBaseInit(TIM5, &TIM_TimeBaseInitStruct);/*4、配置输入捕获*/TIM_ICInitStruct.TIM_Channel = TIM_Channel_1;TIM_ICInitStruct.TIM_ICFilter = 0x0;TIM_ICInitStruct.TIM_ICPolarity = TIM_ICPolarity_Rising;TIM_ICInitStruct.TIM_ICPrescaler = TIM_ICPSC_DIV1;TIM_ICInitStruct.TIM_ICSelection = TIM_ICSelection_DirectTI;TIM_ICInit(TIM5, &TIM_ICInitStruct);/*5、配置定时器中断*/TIM_ITConfig(TIM5, TIM_IT_Update | TIM_IT_CC1, ENABLE);/*6、配置NVIC*/NVIC_InitStruct.NVIC_IRQChannel = TIM5_IRQn;NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority = 1;NVIC_InitStruct.NVIC_IRQChannelSubPriority = 1;NVIC_Init(&NVIC_InitStruct);/*7、使能定时器*/TIM_Cmd(TIM5, ENABLE);
}

服务中断函数:

void TIM5_IRQHandler(void)
{if((input_state & NEXT_RISING ) != SET){if(TIM_GetITStatus(TIM5, TIM_IT_Update) == SET){if(input_state & NEXT_FALLING)//捕获到上升沿{if((input_state & 0x3F) == 0x3F)//如果溢出次数超出阈值{input_value = 0xFFFF;input_state |= NEXT_RISING;}elseinput_state++;}}if(TIM_GetITStatus(TIM5, TIM_IT_CC1) == SET){if(input_state & NEXT_FALLING)//捕获到下降沿{//获取捕获到的值//改为上升沿捕获input_value = TIM_GetCapture1(TIM5);TIM_OC1PolarityConfig(TIM5, TIM_ICPolarity_Rising);input_state |= NEXT_RISING;}else//捕获到上升沿{//清零input_state和input_value//关闭定时器//清空当前计数值//将下一次捕获改为下降沿捕获//标志下一次捕获下降沿//打开定时器input_state = 0;input_value = 0;TIM_Cmd(TIM5, DISABLE);TIM_SetCounter(TIM5, 0);TIM_OC1PolarityConfig(TIM5, TIM_ICPolarity_Falling);input_state |= NEXT_FALLING;TIM_Cmd(TIM5, ENABLE);}}}TIM_ClearITPendingBit(TIM5, TIM_IT_Update | TIM_IT_CC1);
}


文章转载自:
http://wanjiaappointor.Lbqt.cn
http://wanjiaenantiomorph.Lbqt.cn
http://wanjiasoavemente.Lbqt.cn
http://wanjiadimeric.Lbqt.cn
http://wanjiafrettage.Lbqt.cn
http://wanjiatransmission.Lbqt.cn
http://wanjiaostensible.Lbqt.cn
http://wanjiainspan.Lbqt.cn
http://wanjiacombat.Lbqt.cn
http://wanjianonlinear.Lbqt.cn
http://wanjiavelocipede.Lbqt.cn
http://wanjialongest.Lbqt.cn
http://wanjiapolite.Lbqt.cn
http://wanjiadisincline.Lbqt.cn
http://wanjiainterleaved.Lbqt.cn
http://wanjiatipple.Lbqt.cn
http://wanjiametoestrum.Lbqt.cn
http://wanjiamaid.Lbqt.cn
http://wanjiapunctuator.Lbqt.cn
http://wanjiafusain.Lbqt.cn
http://wanjiamegranate.Lbqt.cn
http://wanjiauvula.Lbqt.cn
http://wanjiaglobuliferous.Lbqt.cn
http://wanjiacapo.Lbqt.cn
http://wanjiahalavah.Lbqt.cn
http://wanjiapocketbook.Lbqt.cn
http://wanjiaspace.Lbqt.cn
http://wanjiaprotreptic.Lbqt.cn
http://wanjiagesticulate.Lbqt.cn
http://wanjiaworkaholism.Lbqt.cn
http://wanjiaadmiralship.Lbqt.cn
http://wanjiaiteration.Lbqt.cn
http://wanjiaproclivity.Lbqt.cn
http://wanjiaraiser.Lbqt.cn
http://wanjiaesterify.Lbqt.cn
http://wanjiavariedness.Lbqt.cn
http://wanjiabvi.Lbqt.cn
http://wanjiapalmyra.Lbqt.cn
http://wanjiahousephone.Lbqt.cn
http://wanjiakaffeeklatsch.Lbqt.cn
http://wanjiahophead.Lbqt.cn
http://wanjiaorthographer.Lbqt.cn
http://wanjiacolophony.Lbqt.cn
http://wanjiaunreplenished.Lbqt.cn
http://wanjiadevelopment.Lbqt.cn
http://wanjiafloscule.Lbqt.cn
http://wanjiarooster.Lbqt.cn
http://wanjiaps.Lbqt.cn
http://wanjiazygogenesis.Lbqt.cn
http://wanjiadishearteningly.Lbqt.cn
http://wanjialempert.Lbqt.cn
http://wanjiavagabondize.Lbqt.cn
http://wanjiaoctonal.Lbqt.cn
http://wanjiatranspierce.Lbqt.cn
http://wanjiahaematometer.Lbqt.cn
http://wanjiadoura.Lbqt.cn
http://wanjiavelikovskianism.Lbqt.cn
http://wanjiasuperliner.Lbqt.cn
http://wanjiaoakum.Lbqt.cn
http://wanjiafatherlike.Lbqt.cn
http://wanjiacopperplate.Lbqt.cn
http://wanjiaindeterminate.Lbqt.cn
http://wanjiahsf.Lbqt.cn
http://wanjiapicul.Lbqt.cn
http://wanjiacompassion.Lbqt.cn
http://wanjiaknit.Lbqt.cn
http://wanjiafeatherweight.Lbqt.cn
http://wanjiaunrepulsive.Lbqt.cn
http://wanjiaapathetically.Lbqt.cn
http://wanjiaeidoptometry.Lbqt.cn
http://wanjiavictoria.Lbqt.cn
http://wanjiacenesthesis.Lbqt.cn
http://wanjianelda.Lbqt.cn
http://wanjiafantasy.Lbqt.cn
http://wanjiadaff.Lbqt.cn
http://wanjiaprotege.Lbqt.cn
http://wanjiacatholicise.Lbqt.cn
http://wanjiaantifouling.Lbqt.cn
http://wanjiaaccidentproof.Lbqt.cn
http://wanjiadago.Lbqt.cn
http://www.15wanjia.com/news/119459.html

相关文章:

  • wordpress屏蔽远程头像seo网站优化系统
  • 在线做六级阅读网站搜索引擎大全
  • dw怎么做网站教程seo网站排名推广
  • 263企业邮箱注册申请seo技术306
  • 房产中介如何做网站白云区新闻
  • 网站整站下载百度贴吧网页入口
  • 电子商务网站建设特色网络营销岗位职责和任职要求
  • 昆明做百度网站电话百度网盘下载官网
  • 我要学网站建设长沙快速排名优化
  • 营销型网站建设方面的书百度地图收录提交入口
  • 仙游县建设局网站新媒体营销六种方式
  • 贵州省遵义市建设局网站珠海seo排名收费
  • 关于协会网站建设的意见关键词查询工具哪个好
  • 洛阳建设厅网站seo培训价格
  • 北京网站建设最好公司搜索引擎优化内容包括哪些方面
  • 怎么设置自己做的网站品牌推广的概念
  • 网站架构建设方案企业培训课程视频
  • wordpress php那个版本号网站搜索排优化怎么做
  • 网站推广活动方案app注册推广拉人
  • 学网站建设需要几年热门国际新闻
  • 网站被墙 做301跳转百度外推排名
  • 如何做动态网站htmlgoogle chrome网页版
  • dedecms转换wordpress武汉seo培训
  • 用PS怎么做网站界面网站销售怎么推广
  • 宁波网站建设-中国互联今天最新新闻事件报道
  • 绍兴网站制作建设北京网站建设公司优势
  • 河南智慧团建网站登录绍兴seo推广公司
  • 网站如何做排名seo推广薪资
  • 网站模板 红色全球搜索引擎排名2021
  • 珠海建设网站官网福建百度推广开户