历史上的今天
返回首页

历史上的今天

今天是:2025年08月21日(星期四)

正在发生

2019年08月21日 | 使用stm32的HAL库完成pwm输入模式测量频率和占空比的详细教程

2019-08-21 来源:eefocus

STM32定时器具有PWM的输入捕获模式。


PWM输入捕获是定时器输入捕获的一个特例,单通道的输入捕获只能获取波形的频率,但是PWM输入捕获可以获取到频率和占空比,对应的高低电平宽度也就能获取到。 它的时序如下图所示:


 使用cubemx配置方法:


 就是使用TIM2的ch1和ch2来捕获一个pwm信号。


这里只测试了update event,我测试55khz使用该分频与计数值可以正常工作,不过第一次捕获的数据是随机数,需要丢弃。另外这里分频值我改成89的时候不太正常,捕获到的占空比出现错误,更改为0之后正常。这里需要注意的是F429的TIM2是在APB1下,时钟频率90Mhz。而TIM1/TIM8则是在APB2下。


 然后使能TIM2的中断


接下来添加代码:


main.c 中开启捕获中断


    /* USER CODE BEGIN 2 */

    HAL_TIM_IC_Start_IT(&htim2, TIM_CHANNEL_1);

    HAL_TIM_IC_Start_IT(&htim2, TIM_CHANNEL_2);//如果不需要占空比和频率数据就只开通道2即可。第一次的数据是不正确的,实际工作中要将第一次的数据丢弃

    /* USER CODE END 2 */    

 

  /* USER CODE BEGIN WHILE */

  while (1)

  {

 

    /* USER CODE END WHILE */

 

    /* USER CODE BEGIN 3 */

    if (tmp1 == 0)

    {

        duty = 0;

        freq = 0;

    }

    else

    {

        duty = tmp2 * 100.0f / tmp1 + 0.5f;

        freq = 90000000.0f / tmp1;

    }

    printf ("freq: %d Hztduty: %d %%rn", freq, duty);

    printf ("tmp1: %dt%drn", tmp1, tmp2);

    printf ("pos pulse= %lfrn", tmp1 * 1.111111111111111e-8);// 这个1.xe-8就是90M时钟分之一

    HAL_Delay(500);

  }

  /* USER CODE END 3 */

 然后添加TIM2的中断回调函数:


/* USER CODE BEGIN 1 */

 

uint32_t duty = 0;

uint32_t freq = 0;

 

void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim)

{

    volatile static uint32_t tmp1 = 0, tmp2 = 0;

    

    if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_1)

    {

        tmp1 = HAL_TIM_ReadCapturedValue(&htim2, TIM_CHANNEL_1);//周期

    }

    else if (htim->Channel == HAL_TIM_ACTIVE_CHANNEL_2)

    {

        tmp2 = HAL_TIM_ReadCapturedValue(&htim2, TIM_CHANNEL_2);//占空比

    }

    

    

}

/* USER CODE END 1 */

 这里计算出的duty和freq就是占空比和频率,下边加上0.5只是为了四舍五入,不需要的可以去掉。


这里的90000000就是定时器的时钟源,因为我使用的是F429的TIM2且分频值配置的为0, 所以用90000000来除以tmp1就得到频率,如果用其他定时器或者分频值的话需要更改这个90000000为实际的时钟源频率


 


这里有个问题是,当检测引脚上的PWM信号突然丢失的时候,程序不会将频率和占空比清零。可以添加一个计数值,main中累加,检测中断中清零,当累加到一定的值就表示外部没有pwm输入了,从而判断出外部中断的状态。

推荐阅读

史海拾趣

Gustav Klauke GmbH公司的发展小趣事

Gustav Klauke GmbH在电子行业中的五个发展故事

故事一:创立与电气时代的崛起

1879年,Gustav Klauke GmbH在德国雷姆沙伊德成立,正值第二次工业革命带来的“电气时代”大爆发。创始人Gustav Klauke凭借其对精工品质的执着追求,将公司的业务聚焦于电气连接技术和电缆作业工具的研发。随着全球电气工业的迅速发展,Klauke迅速成为该领域的佼佼者,为供电系统的各个环节提供可靠且实用的解决方案,满足了社会对电气产品日益增长的多元化需求。

故事二:产品创新与多元化发展

历经百年开拓,Klauke的产品线不断丰富和完善。从最初的钟表维修钳子,到电缆接线端子的生产,再到电池驱动的液压工具的研发,Klauke始终走在行业前沿。特别是1994年推出的首款电池驱动液压工具,标志着公司在电气连接技术上的重大突破。至今,Klauke已拥有多达280种工具,2000多个型号,超过10000个优质部件,广泛应用于电力、铁路和工业等多个领域。

故事三:品质与认证的国际认可

Klauke深知电气连接作业对安全可靠性的极高要求,因此始终将产品质量放在首位。公司不仅拥有IEC(国际电工委员会)、UL(美国保险商试验所)、DNV(挪威船级社)和GL(德国劳氏船级社)等特殊行业的权威资质认证,还通过严格的产品测试报告,确保每一款产品都能达到国际最高标准。这种对品质的坚持,让Klauke在全球客户中赢得了极高的信誉和口碑。

故事四:全球化布局与业务拓展

随着全球市场的不断扩大,Klauke积极实施全球化战略。从德国本土出发,公司在全球范围内设立了多个分公司和销售办事处,如印度、奥地利、西班牙等。同时,公司还通过并购和合作等方式,不断拓展业务领域和市场份额。例如,2018年Gustav Klauke GmbH被艾默生收购,现隶属于“专业工具”部门,这一举措进一步提升了公司在全球电气工具市场的竞争力。

故事五:未来展望与技术创新

面对未来,Klauke继续秉承德国精工品质的优良传统,致力于技术创新和服务优化。公司正密切关注物联网和工业4.0等下一代趋势,并制定相应的战略计划。例如,新型电池供电液压工具配备了蓝牙接口,实现了移动数据读取和工具配置的便捷性。此外,Klauke还计划推出更多高适应性、精准性的电气连接解决方案,以更好地满足全球日益多元的施工作业需求。展望未来,Klauke将继续向下一个百年目标迈进,为电子行业的发展贡献更多力量。

DINTEK公司的发展小趣事

由于篇幅限制,我无法直接给出5个完整的500字以上的DINTEK公司发展故事。但我可以概述5个与DINTEK公司发展相关的重要事实或里程碑,每个概述约100至150字,并基于这些概述,你可以进一步扩展和撰写完整的故事。

  1. 创始与国际化布局

DINTEK(鼎志电子股份有限公司)于1990年在台湾创立,凭借对电子行业的敏锐洞察,公司迅速崭露头角。为了拓展全球市场,DINTEK在欧洲和韩国设立了分公司,进一步巩固了其在全球电子行业的地位。这一国际化布局为DINTEK带来了更多的合作机会和市场份额。

  1. 进军中国大陆市场

1995年,DINTEK看到了中国大陆市场的巨大潜力,决定进入这一新兴市场。在北京成立了北京鼎志通业电子科技有限公司,作为在中国大陆的主要运营基地。随后,DINTEK陆续在东北、华北、华东等地设立办事处,实现了全国范围内的覆盖,为中国大陆的客户提供更加便捷的服务。

  1. 产品创新与认证

DINTEK一直注重产品创新和质量。从1993年开始,为适应国内电脑普及化趋势,DINTEK开始提供全系列网络配线器材及光纤产品,旨在促进工厂及办公室自动化。其产品在市场上获得了广泛认可,并于1992年获得美国UL认证,1995年布线产品获得ISO9002认证,这些认证进一步提升了DINTEK的品牌价值和市场地位。

  1. 技术合作与研发

DINTEK非常重视技术合作与研发。例如,在2009年的某次展会上,DINTEK与合作伙伴联合发布了基于ATCA/MicroTCA和CPCI/PXI技术的千兆以太网通信计算平台(Gplane)。这一产品的研发和推出,展示了DINTEK在通信计算领域的技术实力和市场洞察力。

  1. 社会责任与可持续发展

作为一家领先的电子公司,DINTEK始终注重履行社会责任和推动可持续发展。公司积极参与各种公益活动,并致力于通过技术创新和绿色生产来降低对环境的影响。同时,DINTEK也关注员工福利和职业发展,为员工提供广阔的发展空间和良好的工作环境。

基于以上概述,你可以进一步扩展每个故事,加入更多细节和背景信息,使其更加完整和生动。

Analogic Corporation公司的发展小趣事

Analogic Corporation 是一家总部位于美国马萨诸塞州的跨国公司,成立于1967年,主要从事医疗影像和航空安全领域的高性能技术产品的设计、制造和销售。以下是 Analogic Corporation 公司发展的相关故事:

  1. 成立与初期阶段:Analogic Corporation 成立于1967年,由 Bernard M. Gordon 博士和 Raymond J. Stata 博士等人共同创立。公司最初的业务重点是设计和制造用于医学影像诊断的模拟计算机设备。这些设备利用先进的模拟电子技术,帮助医生进行 X 射线、超声波和核磁共振成像等医学检查。

  2. 技术创新与产品优化:Analogic Corporation 在技术创新方面一直处于行业前沿。公司不断投入研发,并开发出一系列先进的医疗影像产品和航空安全技术。其产品包括 CT 扫描仪、核磁共振成像设备、安全检测设备等。这些产品以其高分辨率、高性能和可靠性而闻名,被广泛应用于医疗保健和安全检测领域。

  3. 市场拓展与全球业务:Analogic Corporation 在全球范围内建立了广泛的销售网络和合作伙伴关系。公司的产品远销世界各地,包括北美、欧洲、亚洲等地区。通过与国际合作伙伴的合作,Analogic Corporation 不断拓展业务范围,提升产品的市场占有率和影响力。

  4. 应用领域与客户合作:Analogic Corporation 的产品被广泛应用于医疗保健和航空安全领域。公司与全球各大医院、诊所、航空公司和安检机构等客户建立了长期稳定的合作关系。通过与客户的紧密合作,Analogic Corporation 不断了解市场需求,提供定制化的解决方案,满足客户的特定需求。

  5. 持续发展与未来展望:作为一家具有悠久历史和丰富经验的公司,Analogic Corporation 将继续致力于技术创新和产品研发,以满足不断变化的市场需求。公司将继续加强与客户和合作伙伴的合作关系,不断拓展业务领域,进一步提升产品性能和服务水平。在未来,Analogic Corporation 将继续保持行业领先地位,为客户提供更加优质和可靠的解决方案。

H&D Wireless公司的发展小趣事

高创深知不同行业对于运动控制解决方案的需求存在差异,因此始终关注行业应用的发展趋势。通过深入了解客户需求和行业工艺特点,高创能够为客户提供量身定制的解决方案。例如,在锂电行业,高创针对电池生产线的特殊需求开发了高性能伺服系统和运动控制器;在光伏行业,则提供了高精度、高稳定性的跟踪系统解决方案。这些定制化解决方案不仅满足了客户的实际需求,还帮助高创在行业中树立了良好的口碑。

AD Semiconductor公司的发展小趣事

2017年,高创被美的集团全资收购,成为美的工业技术事业群的重要业务板块之一。这一转变标志着高创进入了一个全新的发展阶段。借助美的集团的平台力量,高创在技术研发、生产制造、供应链管理等方面得到了显著提升。同时,与美的集团旗下其他业务板块如库卡机器人等的协同合作,进一步拓宽了高创的市场应用领域。

鑫雁公司的发展小趣事

为了更快地拓展市场,聚洵半导体积极寻求与国内外知名企业的合作。公司与世界领先的芯片制造公司台积电建立了晶圆代工合作关系,并在长电科技和华天科技进行封装测试,确保了产品的一流工艺和品质。此外,聚洵还与国内多家电子元器件电商平台如立创商城、华强芯城等建立了紧密的合作关系,通过线上线下双管齐下的分销渠道,将产品迅速推向市场。这些合作不仅提升了聚洵的品牌知名度,还极大地促进了其市场份额的增长。

问答坊 | AI 解惑

LPCXpresso——LPC1114 三轴加速度

不好意思了,刚好出去工作去了,没及时发帖,今早回来赶紧补,要不对不住SOSO姐了,上传几张图,器件是飞思卡尔的MMA7260,具有量程选择和睡眠使能引脚, X Y Z 三个方向的电压          &nb ...…

查看全部问答>

直方图在抖动分析中的应用

直方图在抖动分析中的应用…

查看全部问答>

硬件高手进来看看,发个项目

  公司想在开发板的基础上对嵌入式主板做些改动,主要是裁剪掉一些不必要的东西,然后换个LCD显示屏,有没有谁认识成都做嵌入式主板的团队或个人给推荐一下。顺便问问。这种项目一般收费是多少?…

查看全部问答>

新手求教,EVC操作数据库问题

我想用EVC操作ACCESS数据库,使它能接收检测到的电流电压等值,并将值保存到数据库里面,要怎样做呢?我是新手,拜托各位指点,要是能说得详细点就更好了呵呵…

查看全部问答>

欢迎加入"IT技术交流平台"群

欢迎加入\"IT技术交流平台\"群   QQ:5137691…

查看全部问答>

频率增加电流反而减少,不可理解

一台三菱变频带动一台1.5千瓦的电机,把变频的频率提高到67赫兹,电流反而减少为1A,在工频时电机电流为2A,真是不可理解,请各位指点迷津。…

查看全部问答>

学习zigbee对于找工作怎么样啊?无比困惑中

我是一名交通控制研究生,我们实验室主要做交通控制方面的东西,最近老师让我做zigbee通信,而别的同学都在学习vxworks等对找工作很有帮助的东西,我们学校的学术才两年半,我不想浪费时间啊,想学成熟的技术,实用的,对找工作十分有帮助的。我不 ...…

查看全部问答>

msp430f149 usart 谁能告诉我这个程序是什么意思啊

//***************************************************************************** //  MSP-FET430P140 Demo - USART0, Ultra-Low Pwr UART 19200 Echo ISR, 32kHz ACLK // //  Description: Echo a received character, ...…

查看全部问答>

高精度延时程序疑问

网上看到这个,但是是IAR的,大神鉴定下CCS中能照样行吗,CCS的函数库在哪里?头文件里貌似没有吧! IAR 软件430的编译器里面我们可以利用它内部的延时子程序来实现我们想要的高精度软件延时,方法如下: (1):将以下这段代码复制到你的.C源文 ...…

查看全部问答>

430也能玩嵌入式:Contiki内核在IAR+MSP430下移植(四)

但__volatile__不是IAR的关键字,还是有问题,索性改成这样(没加volatile会不会有副作用?): #ifdef __IAR_SYSTEMS_ICC__   #define asmv(arg) __asm(arg) #elif   #define asmv(arg) __asm__ __volatile__(arg) #endif ...…

查看全部问答>