历史上的今天
返回首页

历史上的今天

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

正在发生

2021年09月26日 | stm8s103-PWM输出与输入捕获

2021-09-26 来源:eefocus

芯片:stm8s103F3P6


软件环境:IAR for stm8 2.20.3


功能简述:使用定时器1(PD4-Tim1_ch3)输出100Hz 50%占空比的PWM波形;


定时器1(PC6-Tim1_ch1/2)检测输入PWM 波形频率和占空比;


在工程环境无问题情况下,在主函数中直接添加代码:


 

GPIO_Init(GPIOD, GPIO_PIN_4, GPIO_MODE_OUT_PP_LOW_FAST);     //初始化引脚为 输出推拉,低电平,10MHz


    TIM2_DeInit();                                               //定时器2寄存器恢复到默认状态 

    TIM2_TimeBaseInit(TIM2_PRESCALER_16, 10000);                 //16分频, 1MHZ 10000 = 10ms F= 100hz

    TIM2_OC1Init(TIM2_OCMODE_PWM1, TIM2_OUTPUTSTATE_ENABLE, 5000, TIM2_OCPOLARITY_HIGH); //占空比50%

    TIM2_Cmd(ENABLE);                                            //使能定时器2

参考链接:https://blog.csdn.net/qq_18842031/article/details/74531738


PWM输出是没问题的,但是其输入捕获问题是只能检测到频率,不能检测到占空比;


若需要同时检测频率和占空比,还需要使用定时器1的通道1和2,


代码如下:


    GPIO_Init(GPIOC, GPIO_PIN_6, GPIO_MODE_IN_FL_NO_IT);   //输入浮动,没有外部中断  

      

    TIM1_DeInit();                                         //tim1 定时器寄存器全部复位  

    TIM1_TimeBaseInit(0x0f, TIM1_COUNTERMODE_UP, 50000-1, 0);//  50ms  最小捕获50hz      设置时间分频  向上计数    捕捉50Hz及 以上的周期和占空比

    TIM1_PWMIConfig(TIM1_CHANNEL_1, TIM1_ICPOLARITY_RISING, TIM1_ICSELECTION_DIRECTTI, TIM1_ICPSC_DIV1, 0x00); //选择TI1输入上升沿触发 选择TI2输入下降沿触发 输入捕捉预定标器  无滤波

    TIM1_SelectInputTrigger(TIM1_TS_TI1FP1);   //滤波后输入TI1

    TIM1_SelectSlaveMode(TIM1_SLAVEMODE_RESET);//复位输入

    TIM1_ClearFlag(TIM1_FLAG_CC1);                         //指定要清除的标志

    TIM1_ClearFlag(TIM1_FLAG_CC2);                         //指定要清除的标志

    TIM1_ITConfig( TIM1_IT_CC1, ENABLE);                  //去掉是查询方式,否则是中断方式

    TIM1_ITConfig( TIM1_IT_CC2, ENABLE);                  //去掉是查询方式,否则是中断方式

    TIM1_CCxCmd(TIM1_CHANNEL_1, ENABLE);                   //使能输入捕获通道1

    TIM1_CCxCmd(TIM1_CHANNEL_2, ENABLE);                   //使能输入捕获通道2

    TIM1_Cmd(ENABLE);                                      //使能定时器

但是仅仅这样写是不行的,因为PC6的定时器功能,需要使能复用功能才可以使用,不然的话,配置是无效的。


网上大佬还是很多的,详细配置方式见链接:https://blog.csdn.net/qq_18842031/article/details/77104097


最后需要稍微计算下就可以得到频率和占空比了:


INTERRUPT_HANDLER(TIM1_CAP_COM_IRQHandler, 12)

 uint16_t num = 0;

  static uint16_t num1;

  static uint32_t num2;

  uint8_t data[11]={0};

  uint8_t len = 0;

 if(TIM1_GetITStatus(TIM1_IT_CC1) != RESET) //如果CH1边沿触发  

  {  

      num1 = TIM1_GetCapture1();  

      TIM1_ClearITPendingBit(TIM1_IT_CC1);    //清除标志位  

  }  

 else if(TIM1_GetITStatus(TIM1_IT_CC2) != RESET) //如果CH2边沿触发  

  {  

      num2 = TIM1_GetCapture2();             //

      TIM1_ClearITPendingBit(TIM1_IT_CC2);    //清除标志位  

      duty = ((num2 * 100) / num1); //计算占空比

      fre = 1000000/( num1);        //计算频率

  }

 

}

推荐阅读

史海拾趣

Hoffman_Enclosures__Inc.公司的发展小趣事

1945年,一位名叫Harry Hoffman的年轻人凭借对工厂安全的深刻关注,发明了压力机安全保护装置。这一装置能够在操作人员的手处于危险区域时迅速停止机器,有效保护了工人的安全。这一创新不仅为Hoffman公司奠定了技术基础,也标志着公司正式步入工业电气机柜和温控产品的研发与制造领域。Harry Hoffman的这项发明不仅解决了当时工厂安全的一大难题,也为公司后续的发展奠定了坚实的基础。

Cypress Industries公司的发展小趣事

Cypress在半导体制造领域一直处于技术革新的前沿。公司不断引入新的工艺技术,从早期的0.8微米CMOS技术到后来的0.21微米工艺,不断推动产品性能的提升。这种对技术的持续投入和追求,使Cypress在行业内树立了良好的技术形象,并赢得了客户的广泛认可。

千志电子(CCO)公司的发展小趣事

为了进一步拓展业务版图,千志电子开始进军国际市场。2006年,千志电子在香港设立了千志电子(香港)有限公司,将其作为国际服务据点重心之一。这一举措使千志电子能够更好地了解国际市场需求和趋势,加强与国外客户的联系和合作。同时,千志电子还积极参加国际展览和论坛,展示其优质产品和先进技术,提高了品牌知名度和国际影响力。

旌芯半导体(GN)公司的发展小趣事

为了进一步拓展业务版图,千志电子开始进军国际市场。2006年,千志电子在香港设立了千志电子(香港)有限公司,将其作为国际服务据点重心之一。这一举措使千志电子能够更好地了解国际市场需求和趋势,加强与国外客户的联系和合作。同时,千志电子还积极参加国际展览和论坛,展示其优质产品和先进技术,提高了品牌知名度和国际影响力。

ELEKTRO-PLAST NASIELSK公司的发展小趣事

随着环保意识的提高和可持续发展理念的普及,电子行业对环保要求也越来越高。ELEKTRO-PLAST NASIELSK公司积极响应这一趋势,将绿色环保理念贯穿于产品研发和生产过程中。公司采用环保材料和工艺生产产品,并推动供应链中的合作伙伴共同践行环保理念。此外,公司还积极推广可回收利用和循环再生的理念,为保护环境做出了积极贡献。

Heatron公司的发展小趣事

随着全球对环保和节能问题的日益关注,Heatron公司积极响应号召,致力于研发和生产环保节能的电加热产品。公司投入大量资源于新材料、新技术的研发中,成功推出了一系列低能耗、高效率的加热器产品。这些产品不仅满足了市场对环保节能的需求,还进一步巩固了Heatron在电子行业中的领先地位。

问答坊 | AI 解惑

MP3充电器原理与维修

MP3充电器是最易损坏的配件之一。笔者维修多款充电器后发现,它们基本上都是采用开关电源电路,电路结构大同小异。本文以市面上最常见的昕潮TJ-01型充电器为例,简述其工作原理与常见故障检修,电路见图1。工作原理 (1)开关振荡电路市电经D1~D4整 ...…

查看全部问答>

求一份关于串联和并联谐振的资料

最近在用线圈耦合做无线识别,用12M做载波,求谐振资料。 有功放或放大或滤波图的来几张,多谢。 芯片也行 xuchaoda@126.com…

查看全部问答>

标准数字电路 54-74HC全系列高速CMOS数据手册(中文

标准数字电路 54-74HC全系列高速CMOS数据手册(中文)…

查看全部问答>

变色水龙头

似乎自来水管里除了在管道生锈时才会流出红色的水,剩下便是饮料机的出水口会流出带颜色的饮料,其它情况下正常的自来水都是无色透明的。不过使用 LED Faucet Lights 便可以给家里的自来水加上颜色,不过只是在水流出时,通过 LED 灯来照明显示出颜 ...…

查看全部问答>

开关电源保护电路

摘要:为使开关电源在恶劣环境及突发故障状况下安全可靠,提出了几种实用的保护电路,并对电路的工作原理进行了详尽分析。…

查看全部问答>

如何做到长按power键唤醒系统!?

产品有了新需求:要求长按power键3秒钟,系统进入suspend状态;再长按power键3秒钟,唤醒系统。长按3s让系统suspend这个很好做,但是长按3s唤醒系统就让我郁闷了,这个似乎是控制不了,把power键设置为唤醒源之后,只要短按power键中断上来,系统就 ...…

查看全部问答>

如何使用VC实现两个GPRS之间的数据通信?

能否实现两个GPRS模块上网后点对点的信息交互? 怎样才能实现两个模块之间的通信呢?哪怕通过中转服务器也可以... 我不是通信专业的,搞不太清楚,请各位大牛帮忙,跪谢. 我的邮箱是veyou@yeah.net…

查看全部问答>

硬件仿真时怎么都进不了定时器中断

这是我写的一段测试ad转换速度的程序,但是硬件仿真时发现怎么都进不了定时器中断,换成DCO时钟源也不行,不知问题出在哪里,希望各位牛人指点,谢谢!!!! #include <msp430x14x.h> #define uint unsigned int #define uchar unsi ...…

查看全部问答>

电机控制 - AC 感应电机 (ACIM) 概述

本帖最后由 dontium 于 2015-1-23 13:14 编辑            AC 感应电机 (ACIM) 是消费电子类应用和工业应用中最受欢迎的电机,代表了工业革命的力量。   十九世纪末,Nicola Tesla 首次 ...…

查看全部问答>