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

深圳福田网站设计适合团购报名的网站开发

深圳福田网站设计,适合团购报名的网站开发,鞋材 东莞网站建设,拼多多网上怎么开店一、输入捕获介绍 在定时器中断实验章节中我们介绍了通用定时器具有多种功能#xff0c;输入捕获就是其中一种。 STM32F1除了基本定时器TIM6和TIM7#xff0c;其他定时器都具有输入捕获功能 。输入捕获可以对输入的信号的上升沿#xff0c;下降沿或者双边沿进行捕获#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_ChannelTIM_Channel_1; //通道1 TIM_ICInitStructure.TIM_ICFilter0x00; //滤波 TIM_ICInitStructure.TIM_ICPolarityTIM_ICPolarity_Rising;//捕获 极性 TIM_ICInitStructure.TIM_ICPrescalerTIM_ICPSC_DIV1; //分频系数 TIM_ICInitStructure.TIM_ICSelectionTIM_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://www.tj-hxxt.cn/news/224467.html

相关文章:

  • 台州网站建设公司哪个好在别人网站挂黑链
  • 网站建设厘金手指排名十九国外做免费网站的
  • 在线修图网站玖玖建筑网
  • 郑州网站建设维护公司建设网站是公司资产
  • 怎样创建网站以及建站流程是什么wordpress首页标题修改
  • 网络推广建议网络优化的内容包括哪些方面
  • 全网推广公司成都百度网站排名优化
  • 营销网站建设哪家好网站制作小常识
  • 网站建设策划书是有谁编写的wordpress分站点
  • 邯郸网站设计怎么用商标网官方查询官网
  • 站群管理系统wordpress中文标签云
  • 做logo好的网站小榄网站建设
  • 柳城网站开发企业网站功能模块
  • 温州微网站制作多少钱做网站的一些好处
  • 宝塔网站做301重定向自学考试
  • 买了一个域名如何做网站wordpress 更改数据库密码
  • 用织梦做的网站下载地址wordpress 身份认证
  • 英语培训学校网站建设多少钱wordpress 邮件写文章
  • 做视频网站赚钱嘛南京整站优化
  • 廊坊网站制作策划网站嵌入百度地图
  • 浑南区建设局网站win2012 网站建设
  • 额尔古纳网站建设手机上怎么做网站创业
  • 招聘网站内容建设加强网络舆情监测
  • 做海报的网站类似于创客贴网站怎么做下载网页代码吗
  • 权威数据统计网站餐饮培训
  • 深圳手机网站开发wordpress安装使用教程
  • 一个网站费用wordpress炫酷网页
  • 网站建设销售信广告设计是做什么
  • 开源网站系统安全性哪个网站做设计可以挣钱
  • 课程培训网站模板下载百度网页版主页链接