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

开发工具是什么意思/吉林刷关键词排名优化软件

开发工具是什么意思,吉林刷关键词排名优化软件,武锡网站建设生购房政策,郑州做网站和域名输入捕获模式可以用来测量脉冲宽度或者测量频率。STM32 的定时器,除了 TIM6 和 TIM7,其他定时器都有输入捕获功能。STM32 的输入捕获,简单地说就是通过检测 TIMx_CHx 上的边沿信号,在边沿信号发生跳变(比如上升沿/下降…

输入捕获模式可以用来测量脉冲宽度或者测量频率。STM32 的定时器,除了 TIM6 和 TIM7,其他定时器都有输入捕获功能。STM32 的输入捕获,简单地说就是通过检测 TIMx_CHx 上的边沿信号,在边沿信号发生跳变(比如上升沿/下降沿)的时候,将当前定时器的值(TIMx_CNT)存放到对应的通道的捕获/比较寄存器(TIMx_CCRx)中。

1. 相关寄存器介绍

1) 捕获/比较模式寄存器 (TIMx_CCMRx) 


当在输入捕获模式下使用的时候,对应上图的第二行描述,从图中可以看出,TIMx_CCMR1 明显是针对 2 个通道的配置,低八位[7:0]用于捕获/比较通道 1 的控制,而高八位[15:8]则用于捕获/比较通道 2 的控制。同理,CCMR2 这个寄存器用来控制通道 3 和通道 4。今天的实验,我们用到的是 TIM5 的捕获/比较通道 1。


 (1)CC1S[1:0],这两个位用于 CCR1 的通道配置,这里我们设置 CC1S[1:0]=01,也就是配置 IC1 映射在 TI1 上。如果不理解没有关系,看图就知道了。


从图中可以知道,IC1有三个输入源,分别是TI1,TI2,TRC。

TIM5_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; 这是通过库函数配置,映射到TI1。

头文件(stm32f10x_tim.h)定义如下:

#define TIM_ICSelection_DirectTI           ((uint16_t)0x0001) 
#define TIM_ICSelection_IndirectTI         ((uint16_t)0x0002) 
#define TIM_ICSelection_TRC                 ((uint16_t)0x0003)

(2)IC1F[3:0]


表格中的f_ck_int 是定时器的输入频率(TIMxCLK),f_dts 则是根据 TIMx_CR1 的 CKD[1:0]来确定。



上图就是TIMx_CR1寄存器。

#define TIM_CKD_DIV1                       ((uint16_t)0x0000)
#define TIM_CKD_DIV2                       ((uint16_t)0x0100)
#define TIM_CKD_DIV4                       ((uint16_t)0x0200)

假定选IC1F[3:0]=0101,即采样频率为fDTS/2, N=8;

选CKD[1:0]=01,即 tDTS = 2 × tCK_INT;并假定 fCK_INT=72MHz。  

这时可以算出,采样频率为72MHz/2/2=18MHz.

1/(18MHz)*8 = 0.4444us = 444.4ns.

因为N=8,所以滤波器可以滤除掉输入端小于444.4ns的脉冲。 

“数字滤波器由一个事件计数器组成,它记录到N个事件后会产生一个输出的跳变”,这句话可以这样理解:

当滤波器连续采样到N个有效电平时,就输出这个有效电平。 
当滤波器没有连续采样到N个有效电平时,再从0开始计数,输出一直保持上一次输出的有效电平。

例如:滤波器上一次输出是高电平,本次连续采样到(N-1)个高电平,但第N个是个低电平,那么滤波器仍然保持上次输出的高电平,并重新开始计数,记录1次低电平,如果其后采样的(N-1)个也是低电平,此时滤波才输出低电平,于是一个下降沿才出现在IC1上。

(3)IC1PSC[1:0]


这里的“事件”指的是上升沿或者下降沿,具体是哪个由TIMx_CCER寄存器的CCxP位决定。

2)捕获/比较使能寄存器:TIMx_CCER


所以,要使能输入捕获,必须设置 CC1E=1,而 CC1P 则根据自己的需要来配置(捕获发生在上升沿还是下降沿)。 

3) DMA/中断使能寄存器(TIMx_DIER) 


在实验中,我们需要允许位0和位1的中断。

#define TIM_IT_Update                      ((uint16_t)0x0001)
#define TIM_IT_CC1                         ((uint16_t)0x0002)
#define TIM_IT_CC2                         ((uint16_t)0x0004)
#define TIM_IT_CC3                         ((uint16_t)0x0008)
#define TIM_IT_CC4                         ((uint16_t)0x0010)

对应的库函数是:TIM_ITConfig(TIM5,TIM_IT_Update|TIM_IT_CC1,ENABLE);

4) 捕获/比较寄存器 (TIMx_CCRx) 


该寄存器用来存储捕获发生时,TIMx_CNT的值,我们从 TIMx_CCR1 就可以读出通道 1 捕获发生时刻的 TIMx_CNT 值,通过两次捕获(一次上升沿捕获,一次下降沿捕获)的差值,就可以计算出高电平脉冲的宽度。

2. 实验设计

通过TIM3产生一路PWM(从PB5输出),把PB5连接到PA0上,PA0和 TIM5_CH1是同一个管脚。利用TIM5_CH1的输入捕获功能,测量出PWM的宽度。


3. 参考代码

//TIM5_CH1输入捕获配置
void TIM5_Cap_Init(u16 arr,u16 psc)
{	 TIM_ICInitTypeDef  TIM5_ICInitStructure;TIM_TimeBaseInitTypeDef  TIM_TimeBaseStructure;NVIC_InitTypeDef NVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5, ENABLE);	//使能TIM5时钟//TIM5的配置TIM_TimeBaseStructure.TIM_Period = arr;     //重装载值TIM_TimeBaseStructure.TIM_Prescaler =psc; 	//分频系数 TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;      //tDTS = tCK_INTTIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;  //向上计数TIM_TimeBaseInit(TIM5, &TIM_TimeBaseStructure); //TIM5输入捕获配置TIM5_ICInitStructure.TIM_Channel = TIM_Channel_1; //我们用通道1TIM5_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;	//上升沿捕获TIM5_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; //映射到TI1TIM5_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;	 //无预分频器 TIM5_ICInitStructure.TIM_ICFilter = 0x00; //IC1F=0000 ,无滤波器TIM_ICInit(TIM5, &TIM5_ICInitStructure);//中断优先级配置NVIC_InitStructure.NVIC_IRQChannel = TIM5_IRQn;  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 2;  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; NVIC_Init(&NVIC_InitStructure);  TIM_ITConfig(TIM5,TIM_IT_Update|TIM_IT_CC1,ENABLE);//打开更新中断和捕获中断TIM_Cmd(TIM5,ENABLE ); 	//使能定时器5}

#define START          0X01
#define WAIT_RISING    0X02
#define WAIT_FALLING   0X03u16	TIM5CH1_CAPTURE_VAL;	//输入捕获值
u32 a[500] = {0};           //存放电平宽度
u32 i = 0; //数组下标
u8 overflow = 0;    //记录定时器更新中断的次数
u8 state = START;//定时器5中断服务程序
void TIM5_IRQHandler(void)
{ if(i<500){	  if (TIM_GetITStatus(TIM5, TIM_IT_Update) != RESET){	    ++overflow;}if (TIM_GetITStatus(TIM5, TIM_IT_CC1) != RESET)//捕获事件{	if(state == START)		//初始状态				{	overflow = 0;TIM_SetCounter(TIM5,0);state = WAIT_FALLING;TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Falling);		//设置为下降沿捕获}	else if(state == WAIT_RISING)    //等待上升沿{TIM5CH1_CAPTURE_VAL = TIM_GetCapture1(TIM5);a[i++] = TIM5CH1_CAPTURE_VAL + overflow*65536;overflow = 0;TIM_SetCounter(TIM5,0);state = WAIT_FALLING;TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Falling); //设置为下降沿捕获}else // wait falling{TIM5CH1_CAPTURE_VAL = TIM_GetCapture1(TIM5);a[i++] = TIM5CH1_CAPTURE_VAL + overflow*65536;overflow = 0;TIM_SetCounter(TIM5,0);state = WAIT_RISING;TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Rising); //设置为上升沿捕获}}			     	    					   }TIM_ClearITPendingBit(TIM5, TIM_IT_CC1|TIM_IT_Update); //清除中断
}
int main(void)
{			NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);	 //中断优先级分组TIM3_PWM_Init(999,71); // 72/(71+1)=1MHz, T=1us*(999+1) = 1ms  TIM_SetCompare2(TIM3,650);  TIM5_Cap_Init(0XFFFF,71);	//以1MHz频率计数while(1){;}
}
4.实验结果

1) 仿真图



PWM 高电平= 350us, 低电平=650us

2) 得出的数组


高电平:347us, 低电平 647us

结论:实验OK



转载于:https://www.cnblogs.com/longintchar/p/5224421.html

http://www.lbrq.cn/news/1460413.html

相关文章:

  • 重庆华鼎达网站建设/企业宣传网站
  • 网站开发清单/神马站长平台
  • 上海网站自然排名优化价格/小程序开发系统
  • 网站制作模板免费下载/app优化建议
  • 网站关键词seo费用/制作网站需要什么
  • 西安网站建设公司排名/郑州网络推广代理
  • 注册域名之后怎么做网站/上海做推广的引流公司
  • 开个做网站公司/怎么优化标题和关键词排名
  • 网站建设套模板/2024年重大新闻摘抄
  • 湖北 网站 备案 时间/启动互联全网营销推广
  • 昆明网站建设天猫运营/企业网站seo贵不贵
  • 佛山网站建设网络公司/列举网络推广的方式
  • 网站建设温州/如何自己做网站
  • 浦口做网站价格/江苏seo外包
  • 网上有女的叫你建网站/微信广告投放推广平台多少费用
  • 南京高端网站建设工作室/拉新平台哪个好佣金高
  • php开发微网站开发/长沙网络营销外包哪家好
  • 美工做图详情页设计/什么叫seo网络推广
  • 怎样把自己做的网站发布/怎么把广告发到各大平台
  • 快速搭建网站 数据存储/百度发布
  • 网站开发和前端和数据媒体/全球搜官网
  • 网站空间服务器排名/公司怎么推广网络营销
  • 太原网站建设优化/营销型网站开发公司
  • 电脑手机网站制作/市场调研问卷调查怎么做
  • visual studio 开发网站开发/无锡百度竞价公司
  • 网站建设登录注册怎么做/排行榜哪个网站最好
  • 英文建设网站/百度搜索引擎优化指南最新版
  • 理卖做各视频网站的会员/如何推广网页
  • 达州市建设局网站/网上销售
  • 禅城网站建设代理/新闻联播直播 今天
  • 第15届蓝桥杯Scratch图形化国赛初/中级组2024年9月7日真题
  • 50天50个小项目 (Vue3 + Tailwindcss V4) ✨ | TodoList(代办事项组件)
  • 前后端交流
  • 一种基于入侵杂草优化算法(IWO)的聚类算法,并与K-Means、高斯混合模型(GMM)进行对比,Matlab
  • 【软考中级网络工程师】知识点之级联
  • java8学习笔记-Stream流