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;
  uint8_t tmpccrl=0, tmpccrh=0;

  tmpccrh = TIM2->CNTRH;
  tmpccrl = TIM2->CNTRL;

  tmpccr = (uint16_t)(tmpccrl);
  tmpccr |= (uint16_t)((uint16_t)tmpccrh << 8);
  /* Get the Capture  Register value */
  return (uint16_t)tmpccr;
}
void main(void)
{
  uint16_t Counter;
  System_Initializes();
  pwm1_init();
  //pwm11();
  //pwm12();
  pwm13();

  while(1)
  {
    while(SC_READ==0);
    //LED_REVERSE;
    Counter = TIM2_GetCapture();//计数值赋给变量
    TIM2_SetCounter(0);         //计数值清零
    UART1_SendByte(0xaa);
    UART1_SendByte(Counter>>8);
    UART1_SendByte(Counter);

    while(!SC_READ==0);
    Counter = TIM2_GetCapture();//计数值赋给变量
    TIM2_SetCounter(0);         //计数值清零
    UART1_SendByte(0xbb);
    UART1_SendByte(Counter>>8);
    UART1_SendByte(Counter);
    // LED_REVERSE;
  }

}

猜你喜欢

转载自blog.csdn.net/xiyancsdn/article/details/82460256