历史上的今天
返回首页

历史上的今天

今天是:2025年02月09日(星期日)

正在发生

2020年02月09日 | STM8SF903K3T6定时器1输入捕获

2020-02-09 来源:eefocus

简介

最近接了个转速仪的项目,原理是计频率。最开始是用外部中断,然后根据定时器定时一秒来取值,转速是rpm,所以还要乘以60.


因为需要反映快所以后来改用定时捕捉。采用TIM1的通道一PC1来捕捉。


代码流程

1.开启系统时钟(可以选择内部或者外部)


void CLK_Configuration(void)

{

  CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1); //HSI = 16M (1分频)

}


2.开启定时器设置,开启溢出中断,是因为在捕获两个信号时,时间大于定时器最大计数时间,算出溢出时间。


void TIM1_CAP_Configuration(void)

{

    TIM1_DeInit();

     //分频系数(15+1)   向上计数    最大计数值65535

    TIM1_TimeBaseInit(15, TIM1_COUNTERMODE_UP, 65535, 0);

     //捕获通道1   下降沿    选择TI1    不滤波

    TIM1_ICInit(TIM1_CHANNEL_1, TIM1_ICPOLARITY_FALLING, TIM1_ICSELECTION_DIRECTTI,

                TIM1_ICPSC_DIV1, 0x00);

     //使能输入捕获通道一中断请求,更新中断

    TIM1_ITConfig( TIM1_IT_CC1, ENABLE);

    TIM1_ITConfig( TIM1_IT_UPDATE, ENABLE);   //加入更新中断是因为要加入溢出计数。

     //清除输入捕获通道一中断标志位。更新中断标志位。

    TIM1_ClearFlag(TIM1_FLAG_CC1);

    TIM1_ClearFlag(TIM1_FLAG_UPDATE);

     //开启定时器

    TIM1_Cmd(ENABLE);

}


3.中断函数设置。


//更新中断

INTERRUPT_HANDLER(TIM1_UPD_OVF_TRG_BRK_IRQHandler, 11)

{

    if(TIM1_GetFlagStatus(TIM1_FLAG_UPDATE) != RESET && Start_Count_Flag)

    {

          if(TIM1CH1_CAPTURE_STA==0xff)         //计数溢出

          {

              loop = 0;                         //重新捕获

              TIM1CH1_CAPTURE_STA = 0;          //状态清0

          }

          else

          {

              TIM1CH1_CAPTURE_STA++;

          }

    }

    TIM1_ClearITPendingBit( TIM1_IT_UPDATE );  //清除溢出中断标志位

    TIM1_ClearFlag( TIM1_FLAG_UPDATE );    //清除溢出标志位

}

//输入捕获中断

INTERRUPT_HANDLER(TIM1_CAP_COM_IRQHandler, 12)

{

    //TIM1_FLAG_CC1通道一捕捉信号通道位。

    if(TIM1_GetFlagStatus(TIM1_FLAG_CC1) != RESET && Start_Count_Flag)

    {

        //为了能检测每一个波形的周期,加入了以下检测方法。

        switch(loop)

        {

            case  0:               //开启捕获后第一个信号

            TIM1_SetCounter(0);    //计数器清0

            loop = 1;

            break;


            case 1:                //下一个信号

            TIM1CH1_CAPTURE_VAL =  TIM1_GetCapture1();    //读取计数值

            TIM1_SetCounter(0);             //计数器清0

            TIM1CH1_CAPTURE_SUCCEED = 1;      //捕获成功

            temp=TIM1CH1_CAPTURE_STA&0xff;    //读取数据

            temp*=65536;                     //溢出时间总和 

            temp+=TIM1CH1_CAPTURE_VAL;       //加上计数器时间

            TIM1CH1_CAPTURE_STA=0;          //溢出计数清0

            break;


            default :

            loop = 0;

            break;

        }

    }

    TIM1_ClearITPendingBit( TIM1_IT_CC1 );  //清除更新中断标志位

    TIM1_ClearFlag( TIM1_FLAG_CC1 );    //清除输入捕获标志位

}

推荐阅读

史海拾趣

Clover Display Limited公司的发展小趣事

随着业务的不断发展,Clover Display Limited意识到规模化生产的重要性。1993年,公司在中国顺德建立了一座占地8000平方米的工厂,专门从事客户定制的LCD及LCM的工业应用。这一举措不仅大幅提升了公司的生产能力,也使其能够更深入地了解市场需求,开发出更符合客户要求的产品。工厂的建立标志着Clover Display Limited在液晶显示领域的地位进一步巩固。

ERGOBAHCO公司的发展小趣事

在快速发展的同时,ERGOBAHCO公司始终不忘履行社会责任和推动可持续发展。公司积极参与社会公益事业,捐款捐物支持贫困地区的教育、医疗等事业。同时,ERGOBAHCO公司还注重环保和节能减排工作,通过引进先进的环保技术和设备,实现了生产过程的绿色化、低碳化。这些举措不仅提升了公司的社会形象,也为公司的可持续发展奠定了坚实基础。

Freqtech Ohg公司的发展小趣事

随着全球对环保和可持续发展的重视,Freqtech Ohg公司积极响应,将绿色生产理念融入企业运营的每一个环节。公司引入先进的环保设备和生产工艺,减少生产过程中的能源消耗和废弃物排放。同时,Freqtech还加大了对可再生能源的投资力度,如建设太阳能发电站等,以降低企业运营对环境的影响。这些举措不仅提升了公司的社会形象,还为公司的长期发展奠定了坚实的环保基础。

Franz Binder GmbH & Co公司的发展小趣事

面对电子行业快速迭代的市场环境,Freqtech Ohg公司敏锐地察觉到传统业务面临的挑战。公司果断决定进行业务转型升级,从单一的高频电子元件生产向系统解决方案提供商转变。通过整合上下游产业链资源,Freqtech成功开发出了一系列针对特定应用场景的高频电子系统解决方案,如5G通信基站、卫星导航系统等。这一转型不仅为公司带来了新的增长点,还进一步巩固了其在行业内的领先地位。

Elite Enterprises (H K) Co Ltd公司的发展小趣事

在产品质量得到市场认可后,Elite Enterprises开始积极拓展国内外市场。公司参加了多个国际性的电子展会,展示了其高品质的LED产品,并成功吸引了众多客户的关注。同时,公司还加强了品牌建设,通过广告宣传和口碑传播等方式提高了品牌知名度和美誉度。

BusBoard公司的发展小趣事

随着公司规模的扩大和产品线的丰富,BusBoard公司开始积极寻求市场扩张的机会。通过与国内外知名电子设备制造商建立合作关系,BusBoard公司的产品逐渐打入国际市场。同时,公司还积极参与行业交流和展会,与同行分享经验、探讨合作,共同推动电子行业的发展。这种合作共赢的理念使得BusBoard公司在市场上获得了更多的机会和资源。

问答坊 | AI 解惑

回答: ASIC是什么?FPGA是什么?

问: ASIC的中文翻译是专用集成电路,为什么说它是一种嵌入式微处理器呢?FPGA也是一种嵌入式微处理器吗?我听有人说FPGA指的是一种封装结构,这是正确的吗? 答: 用于专用应用场合的处理器就是嵌入式处理器,不管它是可编程的还是不可编程的。 ...…

查看全部问答>

LEM电流电压传感器

瑞士LEM互感器、LEM电流互感器、LEM电涌保护器、LEM传感器、LEM电压互感器、LEM电量传感器、LEM无线电能表 LEM 是全球电量传感器的知名制造者,也是电量传感器领域的领导者。 LEM集团全球拥有多家公司,销售办事处遍布全球。其中瑞士日内瓦、中 ...…

查看全部问答>

同步整流在WK283R3S-33M中的应用

1 概述 WK283R3S-33M电源模块为非密封灌封系列,其主要技术参数:VOUT=3.3 V,VIN=18 V~36 V,POUT=33 W,SI/Sv=0.5%,η=85%,VP-P=100 mV。该电源模块的外形为1/4砖,其主要特点为低压大电流输出模块、高效率和低纹波电压值、体积为1/4砖可 ...…

查看全部问答>

LPC2101无法仿真。看看是不是编译器的错?

RealView MDK-ARM Version:3.24 CPU是LPC2101 H-JTAG 0.8 软件仿真正常。 现象是仿真器连接都正常。 硬件仿真 在Startup.s中还正常,转向main()函数就死机。 查了好多天了。今天忽然注意到软件仿真的程序地址0x000041A4(比16K还多) 而LPC2 ...…

查看全部问答>

今年的电子设计大赛专科组的怎么做啊?

本帖最后由 paulhyde 于 2014-9-15 09:09 编辑 今年的电子设计大赛专科组的怎么做啊?  …

查看全部问答>

[招聘]七万美金年薪起,美国某著名通信/网络优化服务供应商招聘赴美员工

[招聘职位一:Telecom –OSS Engineer (Nokia OSS/ Netact Engineer) 工作地点:美国 工作类型:全职 签证种类:工作签证 工作待遇:$70,000/年(能力突出者可以面议); 每周工时:40小时/周 申请要求: 1. 本科以上学历; 2. 七年( ...…

查看全部问答>

三端稳压器(78、79系列)管脚序号判断技巧 大赛资料

本帖最后由 paulhyde 于 2014-9-15 09:21 编辑 在78**、79**系列三端稳压器中最常应用的是TO-220和TO-202两种封装。这两种封装的图形以及引脚序号、引脚功能如附图所示。 图中的引脚号标注方法是按照引脚电位从高到底的顺序标注的。这样 ...…

查看全部问答>

就做开发板吧:

    就做开发板吧!可以大家一起做。分析如下:     驱动2.4寸320*240 TFT 彩色液晶,这个只有用IO口模拟LCD的8位总线,最低需要耗费10个IO。这个并不难,难度系数0.3。     驱动SD卡,通过SPI接口 ...…

查看全部问答>

S3C2440平台WinCE5.0中串口发送堵塞现象的疑惑

S3C2440平台WinCE5.0中串口发送堵塞现象的疑惑:    本人开发一个软件,使用TQ公司的SKY2440开发板为模板,使用的是从4.2移植到wince5.0使用的BSP包。    该软件需要用到2个串口(COM0和COM1),TCP/UDP编程;修改MDD层的mdd ...…

查看全部问答>

2440 Camera接口配置

大家好,我请教一个关于2440的问题。我用2440连接一个ITU656接口时序的摄相头,为什么一直接不到同步信号?模块出来的同步开始是(FF,00,00,80),结束是(FF,00,00,90)。2440的ForthWord中的F,V,H是不是同步信号线上的电平?…

查看全部问答>