历史上的今天
返回首页

历史上的今天

今天是:2024年09月29日(星期日)

正在发生

2018年09月29日 | STM32f4---输入捕获实验代码(01)

2018-09-29 来源:eefocus

我们来看看 timer.c文件中,我们添加的两个函数的内容:

TIM_ICInitTypeDef  TIM5_ICInitStructure;

//定时器 5通道1 输入捕获配置

//arr:自动重装值(TIM2,TIM5 是 32位的!!)        psc:时钟预分频数

void TIM5_CH1_Cap_Init(u32 arr,u16 psc)

{

  GPIO_InitTypeDef GPIO_InitStructure;

  TIM_TimeBaseInitTypeDef   TIM_TimeBaseStructure;

  NVIC_InitTypeDef NVIC_InitStructure;

  RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM5,ENABLE);  //TIM5时钟使能     

  RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE); //使能PORTA时钟

  

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0; //GPIOA0

  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;//复用功能

  GPIO_InitStructure.GPIO_Speed = GPIO_Speed_100MHz;  //速度 100MHz

  GPIO_InitStructure.GPIO_OType = GPIO_OType_PP; //推挽复用输出

  GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_DOWN; //下拉

  GPIO_Init(GPIOA,&GPIO_InitStructure); //初始化PA0

 

  GPIO_PinAFConfig(GPIOA,GPIO_PinSource0,GPIO_AF_TIM5); //PA0复用位定时器5

   

  TIM_TimeBaseStructure.TIM_Prescaler=psc;  //定时器分频

  TIM_TimeBaseStructure.TIM_CounterMode=TIM_CounterMode_Up; //向上计数模式

  TIM_TimeBaseStructure.TIM_Period=arr;   //自动重装载值

  TIM_TimeBaseStructure.TIM_ClockDivision=TIM_CKD_DIV1;  

  TIM_TimeBaseInit(TIM5,&TIM_TimeBaseStructure);

  

  TIM5_ICInitStructure.TIM_Channel = TIM_Channel_1; //选择输入端  IC1 映射到TI1上

     TIM5_ICInitStructure.TIM_ICPolarity = TIM_ICPolarity_Rising;  //上升沿捕获

     TIM5_ICInitStructure.TIM_ICSelection = TIM_ICSelection_DirectTI; //映射到 TI1 上

     TIM5_ICInitStructure.TIM_ICPrescaler = TIM_ICPSC_DIV1;    //配置输入分频,不分频  

     TIM5_ICInitStructure.TIM_ICFilter = 0x00;//IC1F=0000 配置输入滤波器 不滤波

      TIM_ICInit(TIM5, &TIM5_ICInitStructure); //初始化 TIM5输入捕获参数

    

  TIM_ITConfig(TIM5,TIM_IT_Update|TIM_IT_CC1,ENABLE);//允许更新和捕获中断 

      TIM_Cmd(TIM5,ENABLE );    //使能定时器 5

 

       NVIC_InitStructure.NVIC_IRQChannel = TIM5_IRQn;

  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=2;//抢占优先级2

  NVIC_InitStructure.NVIC_IRQChannelSubPriority =0;//响应优先级0

  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;  //IRQ 通道使能

  NVIC_Init(&NVIC_InitStructure);  //根据指定的参数初始化VIC 寄存器、

}

//捕获状态

//[7]:0,没有成功的捕获;1,成功捕获到一次.

//[6]:0,还没捕获到低电平;1,已经捕获到低电平了.

//[5:0]:捕获低电平后溢出的次数(对于32位定时器来说,1us计数器加1,溢出时间:4294秒)

u8  TIM5CH1_CAPTURE_STA=0;  //输入捕获状态                 

u32  TIM5CH1_CAPTURE_VAL;  //输入捕获值(TIM2/TIM5是 32位)

//定时器 5中断服务程序    

void TIM5_IRQHandler(void)

{  

    if((TIM5CH1_CAPTURE_STA&0X80)==0)//还未成功捕获  

  {

    if(TIM_GetITStatus(TIM5, TIM_IT_Update) != RESET)//溢出

    {        

      if(TIM5CH1_CAPTURE_STA&0X40)//已经捕获到高电平了

      {

        if((TIM5CH1_CAPTURE_STA&0X3F)==0X3F)//高电平太长了

        {

          TIM5CH1_CAPTURE_STA|=0X80;    //标记成功捕获了一次

          TIM5CH1_CAPTURE_VAL=0XFFFFFFFF;

        }else TIM5CH1_CAPTURE_STA++;

      }    

    }

    if(TIM_GetITStatus(TIM5, TIM_IT_CC1) != RESET)//捕获 1发生捕获事件

    {  

      if(TIM5CH1_CAPTURE_STA&0X40)  //捕获到一个下降沿      

      {           

         TIM5CH1_CAPTURE_STA|=0X80;  //标记成功捕获到一次高电平脉宽

         TIM5CH1_CAPTURE_VAL=TIM_GetCapture1(TIM5);//获取当前的捕获值.

           TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Rising); //设置上升沿捕获

      }else                 //还未开始,第一次捕获上升沿

      {

         TIM5CH1_CAPTURE_STA=0;  //清空

         TIM5CH1_CAPTURE_VAL=0;

         TIM5CH1_CAPTURE_STA|=0X40;//标记捕获到了上升沿

         TIM_Cmd(TIM5,ENABLE );    //使能定时器 5

           TIM_SetCounter(TIM5,0); //计数器清空

           TIM_OC1PolarityConfig(TIM5,TIM_ICPolarity_Falling);//设置下降沿捕获

         TIM_Cmd(TIM5,ENABLE );    //使能定时器 5

      }         

    }                                 

    }

  TIM_ClearITPendingBit(TIM5, TIM_IT_CC1|TIM_IT_Update); //清除中断标志位

}


推荐阅读

史海拾趣

FEIG ELECTRONIC公司的发展小趣事

Digi-Key作为全球知名的电子元器件分销商,与FEIG ELECTRONIC建立了长期稳定的合作关系。通过这一合作,Digi-Key为FEIG提供了全球范围内的分销服务,将FEIG的产品推向了更广阔的市场。同时,Digi-Key还为FEIG的产品提供了专业的技术支持和售后服务,进一步巩固了FEIG在RFID领域的领先地位。

CUI Devices公司的发展小趣事

CUI Devices与富昌电子之间的合作关系可以追溯到CUI Inc的时代。多年来,双方建立了深厚的合作基础。在CUI Devices从CUI Inc剥离后,富昌电子继续支持其发展,成为其重要的合作伙伴之一。双方共同致力于推动电子元件行业的发展,为客户提供更优质的产品和服务。这种稳固的合作关系为CUI Devices在市场竞争中提供了有力的支持。

这五个故事展示了CUI Devices在电子行业中的发展历程和取得的成就。从起源与转型到应对全球健康危机的积极举措,再到在压电警报器市场的卓越表现以及电机品牌的崛起与拓展,每一个故事都见证了公司的成长和进步。同时,与富昌电子的稳固合作也为公司的未来发展奠定了坚实的基础。

ENOCEAN公司的发展小趣事

作为一家以技术创新为核心竞争力的公司,EnOcean始终致力于研发更先进、更高效的无线无源传输技术。通过不断投入研发资源,EnOcean在能量转换效率、数据传输速率等方面取得了显著进展。同时,公司还积极探索新的应用领域和市场机会,以保持其在电子行业中的领先地位。

以上五个故事概述了EnOcean公司在电子行业中发展的主要历程和关键事件。通过这些故事,我们可以看到EnOcean凭借其在无线无源传输技术方面的持续创新和卓越性能,成功在全球市场上赢得了广泛认可和应用。

Avery Dennison公司的发展小趣事

1990年,Avery Adhesives与Dennison Manufacturing合并,成立了Avery Dennison公司。这一合并不仅增强了公司的实力,也为其全球扩张提供了有力支持。此后,Avery Dennison通过在欧洲建立工厂、收购其他公司等方式,不断拓展其业务版图。如今,公司的业务已经遍及50多个国家,成为全球领先的标签与包装材料解决方案提供商。

Brainboxes公司的发展小趣事

随着全球化进程的加速,Brainboxes逐渐将业务拓展至全球范围。公司在多个国家和地区设立分支机构或销售网络,以便更好地服务当地客户。同时,Brainboxes也在不断探索新的应用领域和市场机会,为公司的未来发展奠定坚实基础。展望未来,Brainboxes将继续致力于技术创新和市场拓展,为电子行业的发展贡献更多力量。

这五个故事分别展现了Brainboxes公司在电子行业中的创立与发展、技术创新与荣誉、内部制造与供应链、客户亲密度与工业连接以及全球布局与未来展望等方面的事实。通过这些故事,可以更加全面地了解Brainboxes公司在电子行业中的成长轨迹和发展成就。

中环(Central)公司的发展小趣事

2019年,中环公司发布了210mm尺寸G12超大硅片“夸父”系列产品。这一创新产品凭借其高效、高质的特点,迅速获得了市场的认可。G12超大硅片的推出不仅引领了光伏材料的发展方向,也进一步巩固了中环在光伏领域的领先地位。

问答坊 | AI 解惑

招聘高级硬件开发工程师

招聘高级硬件开发工程师 本公司提供良好发展机会和平台 我公司是一家主营一卡通智能管理系统、智能卡机具、热工仪表三大类产品,集研发、生产、销售、工程安装维护等全套工程实施,具有雄厚技术、销售实力的民营企业。 公司于2003年11月取得ISO9 ...…

查看全部问答>

如何计算硬盘的录像时间?

在监控系统工程中,针对不同的格式,不知如何去选择硬盘的容量和录像的时间? 实际上这个问题涉及到几个方面,一是视频信号本身的大小,二是压缩后的大小。 现在监控系统通常是用CIF或者D1的分辨率,其象素值如下:       & ...…

查看全部问答>

Android 3.0系统曝光 最低配置1GHz CPU

福布斯》网站于周三发布文章称,在各大公司重点开发诸如iPhone 4、Droid X和Evo 4等新一代智能手机的同时,有事实表明,无线行业领域内的部分大公司也被与高端智能手机大相径庭的低价智能手机市场蕴藏的潜力所吸引。这不,高通、诺基亚和宏达电都开 ...…

查看全部问答>

困惑已久的地址问题

刚上手WINCE,做一个CAMERA方面的驱动,主要是将inputbuffer中的数据通过驱动转换为outputbuffer,而且inputbu和outputbu都需要和应用程序交互,中间就有一些地址的映射转换。现在是被这些地址搞糊涂了。向各位大侠请教:    首先程序里 ...…

查看全部问答>

界面显示OnPaint时,按钮还没刷新显示,这时候按钮位置的小黑框怎么解决?

RT,做界面时碰到这个问题!在界面显示的时候可以看到一个小黑框闪一下,按钮多的时候就很明显了,搞了很久也没解决。。。求高手赐教!!!…

查看全部问答>

有关钱箱的问题

具体情况如下: 1.目前钱箱有两种连接方式,一种是直接连到主机上,一种是连接到打印机等外设。现在我采用的是连接到打印机的方式,打印机是USB接口的。 2.试过几个POS软件,都不能够打开钱箱,但是能够打印。 3.如果改用LTP或者COM接口的打印机 ...…

查看全部问答>

【LED术语】外延生长(epitaxial growth)

【LED术语】外延生长(epitaxial growth)    在基片上生长结晶轴相互一致的结晶层的技术。用于制作没有杂质和缺陷的结晶层。包括在基片上与气体发生反应以积累结晶层的VPE(气相生长)法、以及与溶液相互接触以生长结晶相的LPE(液相生长 ...…

查看全部问答>

ZigBee无线自组网的LED节能灯控制系统

ZigBee无线自组网的LED节能灯控制系统    摘要:设计了一种基于ZigBee无线自组网控制LED节能灯的控制系统。以TI公司的CC2530为主要硬件平台,利用ZigBee Pro协议栈组建了Mesh网络,在上位机上实现了LED灯亮度的调整和环境温度、电压的监 ...…

查看全部问答>

【招聘 之一】帮公司发个帖子,寻同道挚友,机会难得

公司简介     概伦电子科技有限公司(ProPlus Electronics, Co. Ltd.)致力于电子设计自动化(EDA)技术解决方案,其目标是成为EDA领域的世界级企业。概伦电子在美国硅谷、北京中关村科技园区和济南国家信息通信国际创新园设有 ...…

查看全部问答>

嵌入式Linux 学习方法

我想学Linux操作系统 现在好多招嵌入式工程师之类的都要这方面的要求   自己手头上的资料也不少    可自己看起总有点理不出头绪  有哪位能够给点学Linux的建议      跪求………

查看全部问答>