历史上的今天
返回首页

历史上的今天

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

2021年09月28日 | STM8S103之tim2捕获周期

2021-09-28 来源:eefocus

一、简介

本文以STM8S103F3P6编程为例,介绍STM8S103F3P6定时器2捕获周期


二、实验平台

电脑平台:Windows7 64位旗舰


编译软件:IAR


硬件平台:STM8S103F3P6


三、版权声明


四、实验前提

1、在进行本文步骤前,请先安装IAR  EWSTM8-EV-1311版本;准备好STM8S103F3P6硬件平台。


五、基础知识

暂无


六、源码地址


七、关联文章


链接:http://blog.csdn.net/qq_18842031/article/details/74937222


链接:http://blog.csdn.net/qq_18842031/article/details/77104097


八、实验内容


1.系统时钟初始化为内部16M


  CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);    //时钟   初始化时钟为1分频 16M   2分频8M

 

2.初始化定时器2设置PD3为捕获输入


void Init_Timer2(void)

{

    GPIO_Init(GPIOD, GPIO_PIN_3, GPIO_MODE_IN_FL_NO_IT);//输入  无中断

    

    TIM2_DeInit();

    TIM2_TimeBaseInit(TIM2_PRESCALER_16, 10000-1);           //16分频, 1MHZ 10000 = 10ms 溢出

    TIM2_ICInit(TIM2_CHANNEL_2, TIM2_ICPOLARITY_RISING, TIM2_ICSELECTION_DIRECTTI, TIM2_ICPSC_DIV1, 0x00); //设置通道 设置输入捕获上升触发  捕获输入引脚  输入捕捉预定标器    滤波 

    TIM2_ClearFlag(TIM2_FLAG_CC2);                         //指定要清除的标志

    TIM2_ITConfig(TIM2_IT_UPDATE, ENABLE);                 //使能向上计数功能

    TIM2_ITConfig(TIM2_IT_CC2, ENABLE);                    //使能输入捕获通道2

    TIM2_Cmd(ENABLE);  

}


3.编写主函数


 void main(void)

{

  CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);    //内部时钟16M

  Init_UART1();

  Init_Timer2();

  enableInterrupts();

  while(1);

}

4、编写中断服务函数


uint8_t fet;

 INTERRUPT_HANDLER(TIM2_UPD_OVF_BRK_IRQHandler, 13)

 {

   fet++;

  TIM2_ClearITPendingBit(TIM2_IT_UPDATE);

 

  /* In order to detect unexpected events during development,

     it is recommended to set a breakpoint on the following instruction.

  */

 }

 

/**

  * @brief Timer2 Capture/Compare Interrupt routine.

  * @param  None

  * @retval None

  */

 INTERRUPT_HANDLER(TIM2_CAP_COM_IRQHandler, 14)

 {

  if(TIM2_GetITStatus(TIM2_IT_CC2) != RESET) //如果CH2边沿触发

  {

    static uint8_t buf[12];

    static uint16_t set_num1,set_num2;

    static uint8_t timer1,timer2;

    static uint8_t num;

    

    uint8_t len = 0;

    uint16_t fre = 0;

    num++;

    if(num == 1)

    {

      set_num1 = TIM2_GetCapture2();

      timer1 = fet;

    }

    else if(num == 2)

    {

      num = 0;

      set_num2 = TIM2_GetCapture2();

      timer2 = fet;

      fet = 0;

      fre = 1000000 / ((timer2*10000+set_num2) - (timer1*10000+set_num1));

      

      buf[len++]=fre/10000%10+'0';

      buf[len++]=fre/1000%10+'0';

      buf[len++]=fre/100%10+'0';

      buf[len++]=fre/10%10+'0';

      buf[len++]=fre%10+'0';

      buf[len++]= 'n';

      UART1_Send(buf,6);

    }

  }

  TIM2_ClearITPendingBit(TIM2_IT_CC2);

}

 

5、结果

输出100Hz,实验成功。

推荐阅读

史海拾趣

EiKO Global LLC公司的发展小趣事

为了进一步扩大市场份额,EiKO开始实施全球化战略。公司在美国、加拿大、欧洲和亚太地区设立了办事处,以便更好地服务当地客户。同时,EiKO还积极参加国际照明展会和论坛,与全球同行交流经验和技术,不断提升自身的竞争力。

在全球化布局的过程中,EiKO也面临着各种挑战和困难。然而,公司始终坚持以客户为中心的服务理念,通过不断优化产品和服务质量,赢得了越来越多客户的信赖和支持。

绿宝石(BERYL)公司的发展小趣事

面对日新月异的电子行业发展趋势,绿宝石公司始终保持敏锐的洞察力和创新精神。公司不断加大对研发的投入力度,积极探索新的技术和应用领域。同时,绿宝石公司还注重与高校、科研机构的合作与交流,引进和培养了一批高素质的研发人才。这些创新举措为绿宝石公司的持续发展注入了新的动力,也为行业的未来发展指明了方向。


这些故事是基于一般电子行业发展趋势和公司成长逻辑的虚构内容,旨在展示一个公司可能经历的发展阶段和关键事件。实际上,绿宝石公司的发展过程可能涉及更多复杂的因素和挑战,需要具体的资料和数据进行描述和分析。

Akahane Electronics Ind Corp公司的发展小趣事

Akahane深知人才是企业发展的核心动力。因此,公司一直注重人才培养和引进。通过建立健全的培训机制和激励机制,Akahane吸引了一批批优秀的研发人才和管理人才。这些人才为公司的技术创新和市场拓展提供了有力支撑。同时,公司还积极与高校和研究机构合作,共同培养电子行业的后备力量。

Advanced Electronic Packaging公司的发展小趣事

面对电子行业的快速发展和不断变化的市场需求,Advanced Electronic Packaging公司始终保持敏锐的洞察力和强烈的创新意识。公司不断加大研发投入,推动封装技术的持续创新。从最初的单一材料封装,到后来的多功能复合封装,再到如今的智能化封装技术,公司的每一次创新都引领着电子封装行业的发展潮流。这些创新成果不仅提升了产品的附加值,还推动了整个电子产业的升级换代。

Data Device Corporation公司的发展小趣事

为了进一步扩大市场份额,DDC开始积极开拓国际市场。通过参加国际展会、与海外客户建立合作关系等方式,DDC逐渐在国际市场上树立了良好的品牌形象。同时,DDC还针对不同国家和地区的市场需求,推出了定制化的产品解决方案。这些举措使得DDC在国际市场上的影响力逐渐增强,为公司的发展注入了新的动力。

Agilent Technologies公司的发展小趣事

DDC始终坚持以客户为中心的经营理念,不断倾听客户需求,为客户提供优质的产品和服务。为了保持技术领先地位,DDC不断投入研发,推动产品创新。同时,DDC还建立了完善的客户服务体系,确保客户在使用过程中能够得到及时、有效的支持。这些举措使得DDC在客户中赢得了良好的口碑,为公司的发展奠定了坚实的基础。

问答坊 | AI 解惑

NRF24L01无线模块发射程序

最近从网上下了一NRF24L01无线模块发射程序,改了一下,准备用AT89S51单片机控制,但是运行之后没有反应(不知道模块是否正常运行)。麻烦大家给看一下问题出在哪,程序如下: #include #include #include \"api.h\" /********************** ...…

查看全部问答>

做linux驱动的迷茫啊!(不是技术问题)希望前人指引方向!

    我今年毕业,去了一家很大的公司去做嵌入式Linux驱动,公司很好、很大,但是当我去实习时发现,公司的驱动已经做得很成熟了,而且公司的产品更新换代很慢,几乎驱动是不用改的,所以感觉进这样的公司没办法去得到实践,是不是在这样 ...…

查看全部问答>

远程视频监控的PCB设计问题

请问各位大大,关于DSP远程无线视频监控的的6层PCB电路板设计,其中多层电路板如何分层,在另外想询问一下,哪里能下到TI公司的TMS320DM647的电路原理图和元件封装!…

查看全部问答>

重金请高手帮忙 嵌入式数据

本人急需嵌入式数据应用程序。需要实现下列功能: 基于Windows CE的应用程序可以捕获来自于用户串口数据,并将它们存储在设备上的SQL Server CE数据库中,然后应用程序可以周期性地将SQL Server CE 数据库中的数据通过http上载到SQL Server上的数 ...…

查看全部问答>

贴片电容 没标容值怎么判断其大小?谢谢!!!越详细越好最好附图

贴片电容 没标容值怎么判断其大小?谢谢!!!越详细越好最好附图…

查看全部问答>

如何在VxWorks中添加应用程序!

我在usrApp中添加应用程序后总是在编译时出现 dld: warning: Undefined symbol \'IVEC_TO_INUM\' in file \'partialImage.o\' dld: Undefined symbols found - no output written 不知道是怎么回事?…

查看全部问答>

如何得到某个usb接口上的U盘的盘符?

举个例来说明这个问题,假设一台PC上有编号1、2、3、4的4个usb port,分别插入4支u盘,我如何用程序来实现:得到编号x的usb port上U盘盘符?    因为插入u盘的次序不同,某个usb port上的U盘盘符可能会变化,如果按顺序插入U盘,编号1、 ...…

查看全部问答>

做个ARM系统,片内有64KRAM,还需要再外接一个RAM吗?

用STM32F103zet6做个zigbee手抄器板子,cpu内部有64k的ram,还需要再外接一个ram吗?…

查看全部问答>

毕业生求职该报以怎样的心态

实习过后,无论有没有拿到自己期望的OFFER,进入职场是无论如何也避免不了的。而初入职场,无论是有过实习经历的大学生,还是从未实习过的大学生,都不可避免的遇到一个心态转变的问题,也就是职业心态的培养问题。   由于之前没有真正进入过职 ...…

查看全部问答>

出手头几块开发板,全新,附链接

出手头几块开发板,全新。 1、黑金Cyclone II开发板,item.taobao.com/item.htm?spm=a1z10.1.11.8.4165ef&id=7463768228,黑金官方店的链接,配置需要的应该清楚,就不详细说了。一般价格660元,准备450出手。    2、micro2440 arm9开 ...…

查看全部问答>