新疆喜乐彩玩法

STM8S103之tim1捕获周期及占空比

2019-11-26来源: eefocus关键字:STM8S103  tim1  捕获周期  占空比

本文以STM8S103F3P6编程为例,介绍STM8S103F3P6定时器1捕获周期及占空比


电脑平台:Windows7 64位旗舰

编译软件:IAR

硬件平台:STM8S103F3P6


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


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


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


void Init_Timer1(void)

{

    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);                                      //使能定时器

}


3.编写主函数


void main(void)

{

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

  Init_UART1();

  Init_Timer1();

新疆喜乐彩玩法  enableInterrupts();

  while(1);

}


4、编写中断服务函数


INTERRUPT_HANDLER(TIM1_CAP_COM_IRQHandler, 12)

{

  uint16_t num = 0;

  static uint16_t num1;

  static float 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);    //清除标志位  

      num = (uint16_t)((num2 / num1) * 100。0); //计算占空比

     

     data[len++] = num1 / 10000 % 10 + '0';

     data[len++] = num1 / 1000 % 10 + '0';

     data[len++] = num1 / 100 % 10 + '0';

     data[len++] = num1 / 100 % 10 + '0';

     data[len++] = num1 / 10 % 10 + '0';

     data[len++] = num1 % 10 + '0';

     data[len++] = 'n';         //输出周期时间  单位us

     data[len++] = num / 100 % 10 + '0';

     data[len++] = num / 10 % 10 + '0';

     data[len++] = num  % 10 + '0';

     data[len++] = 'n';         //输出占空比   单位 50% = 50

     Set_UART1Interrupt(data,len);

  }

 

}

 

5、结果

输入100Hz,占空比为50%,结果输出周期10000us 占空比为50% 结果正确,实验成功。

关键字:STM8S103  tim1  捕获周期  占空比 编辑:什么鱼 引用地址:http://news.zjgsmm.com/mcu/ic481135.html 本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:stm8s io配置
下一篇:STM8S103之AD采样

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

STM8S开发环境搭建IAR For STM8
***********************************************************************************************************************************/   本文采用的是STM8S-Discovery开发板,开发板上半部分为ST Link调试器,芯片采用的是STM32F103C8,下半部分是STM8S105C6的开发板。    对于STM8的开发环境,主要采用两种,一种是IAR For STM8,另一种是官方的ST Toolset。ST Toolset中包含了两个工具STVD(ST Visual Develop)和STVP(ST
发表于 2019-12-05
STM8S开发环境搭建IAR For STM8
STM8S内部时钟切换问题解决
/************************************************************************************************************************************ Name    : STM8S内部时钟切换问题解决* Author  : MingMing* Release : 2013/12/28* Update  : 2013/12/29* E-mail  : clint.wang@foxmail.com
发表于 2019-12-05
STM8S内部时钟切换问题解决
STM8S存储器的读写操作
/************************************************************************************************************************************ Name    : STM8S存储器的读写操作* Author  : MingMing* Release : 2014/1/2* Update  : 2014/1/2* E-mail  : clint.wang@foxmail.com
发表于 2019-12-05
stm8s iar printf打印信息
串口通信正常我在程序中#include <stdio.h>int fputc(int ch, FILE *f)//STM8S105,printf函数重定向 {   while (!(UART2->SR&0x80));   UART2->DR=ch;  return ch; } 同时需要修改IAR的Projec t- >Options -> General Options -> Library Configuration中的Library 项由"Normal"改为"
发表于 2019-12-03
stm8s iar printf打印信息
新疆喜乐彩玩法STM8S 长按键识别
最近学习开发STM8S003 MCU,,刚入手这颗MCU,对很多功能不太了解,只能一边开发学习,记录一下学习过程。目前,需要实现KEY1按键长按3s进行关机,Linux下直接获取按键的开始时间戳和结束时间戳,可以直接确定按键的触发时间,目前MCU采用的是按键中断的方式,在中断触发后直接进入进入中断函数进行处理,根据定时器的特性,现在是采用方法如下: 将Tim1进行16分频,即频率为1Mhz,然后设置ARR(预装载计数器)为60000,即每次产生溢出时间为60ms, RCR(重复计数寄存器)为50,即 50 * 60 = 3000ms = 3s 后产生一个更新事件,而在按键中断函数中,在按键释放后,判断是否由此更新
发表于 2019-12-03
stm8s 定时器2测量脉冲宽度(单位 us)
void Init_Timer2(void){  GPIO_Init(GPIOA, GPIO_PIN_3, GPIO_MODE_IN_PU_NO_IT);//输入 无中断  TIM2_TimeBaseInit(TIM2_PRESCALER_16,65536-1);       //16分频, 65ms 溢出  TIM2_Cmd(ENABLE);  }uint16_t TIM2_GetCapture(void){  /* Get the Capture  Register value */  uint16_t tmpccr = 0;&n
发表于 2019-12-02
小广播
何立民专栏 单片机及嵌入式宝典

新疆喜乐彩玩法北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2019 zjgsmm.com, Inc. All rights reserved
北京快3 吉林快3 北京赛车pk10赔率最高的平台 北京赛车pk10玩法 北京赛车pk10玩法 北京赛车pk10赔率最高的平台 北京赛车pk10玩法 快赢彩票计划群 北京赛车怎么玩 福建快3