历史上的今天
返回首页

历史上的今天

今天是:2024年11月28日(星期四)

正在发生

2019年11月28日 | STM8S103之tim2PWM发送tim1捕获周期

2019-11-28 来源:eefocus


本文以STM8S103F3P6编程为例,介绍如何在STM8S103F3P6中利用tim2发送PWM tim1捕获周期。

 

电脑平台:Windows7 64位旗舰

编译软件:IAR

硬件平台:STM8S103F3P6


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


CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);    //初始化时钟为内部时钟1分频及16MHz  


2.TIM2发送PWM


1).初始化tim2


void Init_Timer2(void)

{

    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

}


2).波形如下图

PWM发送成功。


3.TIM1捕获


1).初始化tim1


void Init_Timer1(void)

{

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

    

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

    TIM1_TimeBaseInit(0x0f, TIM1_COUNTERMODE_UP, 10000, 0);//  10ms  100hz      设置时间分频  向上计数    20000代表自动重装载计数值 0~20001溢出

    TIM1_ICInit(TIM1_CHANNEL_3, TIM1_ICPOLARITY_RISING, TIM1_ICSELECTION_DIRECTTI, TIM1_ICPSC_DIV1, 0x00);   //设置通道 设置输入捕获上升触发  捕获输入引脚  输入捕捉预定标器    滤波

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

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

    TIM1_ITConfig( TIM1_IT_UPDATE, ENABLE);                //使能向上计数 功能

    TIM1_CCxCmd(TIM1_CHANNEL_3, ENABLE);                   //使能输入捕获通道3

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

}


2).中断服务函数


unsigned char fe    //全局变量定义

INTERRUPT_HANDLER(TIM1_UPD_OVF_TRG_BRK_IRQHandler, 11)

{

  fe++;

  TIM1_ClearITPendingBit(TIM1_IT_UPDATE);

}

INTERRUPT_HANDLER(TIM1_CAP_COM_IRQHandler, 12)

{

  if(TIM1_GetITStatus(TIM1_IT_CC3) != RESET) //如果CH3边沿触发

  {

    static uint8_t buf[6];

    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 = TIM1_GetCapture3();

      timer1 = fe;

    }

    else if(num == 2)

    {

      num = 0;

      set_num2 = TIM1_GetCapture3();

      timer2 = fe;

      fe = 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);

    }

  }

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

}

 


3).结果如下图

输入的是100Hz,结果采集的是100Hz ,实验成功。


备注:初始化后别忘了开总中断


enableInterrupts();

推荐阅读

史海拾趣

Deltrol Controls公司的发展小趣事

在电子行业中,每个客户的应用场景都各不相同,对产品的需求也千差万别。Deltrol Controls深知这一点,因此一直致力于提供专业化的定制组件服务。无论是电磁阀、软管组件还是其他产品,Deltrol Controls都能根据客户的需求进行定制化设计和生产。这种专业化的服务赢得了客户的信任和好评,也为Deltrol Controls在电子行业中树立了良好的口碑。

请注意,以上故事均为虚构,旨在展示Deltrol Controls在电子行业中的成长和进步。如有需要,建议查阅相关文献资料或公司官方网站以获取更准确的信息。

Atlantic Microwave Ltd公司的发展小趣事

Atlantic Microwave Ltd公司成立于电子科技蓬勃发展的年代,初期只有几名志同道合的工程师,他们怀揣着对微波技术的热情,在狭小的办公室中开始了他们的创业之旅。资金短缺、技术难题、市场认可度低等问题接踵而至。然而,团队凭借着对技术的执着追求和对市场的敏锐洞察,不断攻克技术难关,优化产品设计,逐渐在市场上站稳了脚跟。

Acculin Inc公司的发展小趣事

随着电子行业的竞争加剧,Acculin Inc面临着市场份额下降的挑战。为了应对这一变化,公司决定调整战略方向,将重点转向智能穿戴设备市场。通过研发具有独特功能的智能手环和智能手表,Acculin成功吸引了年轻消费者的关注,并在新的市场领域取得了突破。

Cableform Inc公司的发展小趣事

随着技术的不断进步和市场的扩大,Cableform Inc公司意识到必须走出国门,开拓更广阔的市场。1974年,公司在弗吉尼亚州特洛伊成立了北美业务分部,这是公司国际化战略的重要一步。在北美市场,公司面临着激烈的竞争和不同的文化背景,但凭借着优质的产品和服务,Cableform Inc逐渐赢得了客户的信任,市场份额稳步上升。

Alpha Industries公司的发展小趣事

为了提高生产效率和产品质量,Alpha Industries决定引入数字化生产线。通过与电子设备制造商合作,公司成功建立起一条自动化生产线,实现了从设计到生产的无缝对接。数字化生产线的建立不仅提高了生产效率,还降低了生产成本,使得Alpha Industries的产品更具市场竞争力。

E-tec Interconnect Ltd公司的发展小趣事

为了满足全球客户的需求,E-tec开始在全球范围内进行布局。他们在亚洲、欧洲和北美等地设立了生产基地和研发中心,实现了全球范围内的生产和销售。同时,E-tec还注重供应链的整合和优化,与多家原材料供应商建立了长期稳定的合作关系,确保原材料的稳定供应和成本控制。

问答坊 | AI 解惑

在公司里边,做算法实现、做程序优化以及做DSP系统配置,这几项工作是分开由不同人做的吗

    我现在的课题是设计一个基于DSP的图像处理系统,老师有一个DSP的平台和工业摄像机,但是配置工作需要我自己做,这样我的工作就不光是算法问题了,还包含后期的部分移植代码的优化,我想问,我一个人怎么干得了这么多?公司里边这样一 ...…

查看全部问答>

请推荐一个讲AVR单片机比较好的网站

最近要用AVR单片机,苦于是个初学者,很多东西弄不懂,请各位推荐一个好一点的网站,谢谢!…

查看全部问答>

听说这的牛人很多~特来求救!!!!!!!!!!!!

就是关于用vhdl做的一个数字密码锁。。具体要求如下: 1.4位密码十进制数(0-9) 2.密码设置键 开锁键 清屏键 3.显示:4位密码led(开锁时可见。密码设置为x),锁状态1红(lock)1绿(open)密码错误1红(闪烁) 4.密码错误,报警(声音) 5. ...…

查看全部问答>

2812c语言编译时头文件无法打开

我在用2812c语言编译时头文件无法打开,错误如下: \\"pmsm.c\\", line 24: fatal error: could not open source file \\"DSP281x_Device.h\\" 1 fatal error detected in the compilation of \\"pmsm.c\\". 请高手帮忙指点一二。 ...…

查看全部问答>

【MP430共享】基于无线网络的楼宇温控系统的研究

针对传统楼宇温控系统布线难的问题, 设计了以MS P 4 3 0 F 2 1 2 1 、 温度传感器等硬件为基础 , 用无线模块替代电缆传递信息的控制系统. 该系统定时采集的温度在本地显示的同时, 还将通过无线模块传给上位机. 上位机通过传递来的数据作出判断 ...…

查看全部问答>

再发个launchpad的BoosterPack

这次的launchpad扩展板就比较高端了,是GPS定位模块,先发个图还有个EarthBridge的软件可以配合这个模块使用软件下载地址http://mboffin.com/earthbridge/ 看的都心痒痒了,有个想法想打造属于咱们EEworld自己的boosterpack…

查看全部问答>

求一个电压采样电路【电源组】同学看看啦

本帖最后由 paulhyde 于 2014-9-15 03:27 编辑 想 对最终的输出电压进行采样,然后AD转换输给单片机,单片机 再进行反馈调节    …

查看全部问答>

DIY发烧友的必备资料二、爱上制作特别版:120个绝妙的制作项目

DIY发烧友的必备资料二、爱上制作特别版:120个绝妙的制作项目 《爱上制作特别版:120个绝妙的制作项目》集结了美国知名制作网站Instructables上的120个优秀的项目,分为家居用品、美食、摄影、科学、计算机、电子、机器人、交通工具、手工、 ...…

查看全部问答>