回答

收藏

基于GD32F450的红外解码--外部中断

GD32 GD32 4455 人阅读 | 0 人回复 | 2017-05-25

接上篇,红外解码首先是捕捉到红外数据,我们第一篇里的原理图:

红外数据是接在PB2上,所以我们要使用外部中断来测量PB2上的高低电平时间,然把我这些时间存储起来。
外部中断初始化函数和中断处理函数如下:
  1. /*!
  2.     \brief      initialize Exti Interrupt(PB2)
  3.     \param[in]  none
  4.     \param[out] none
  5.     \retval     none
  6. */
  7. void InitExtiInterrupt(void)
  8. {
  9.         rcu_periph_clock_enable(RCU_SYSCFG);
  10.         nvic_irq_enable(EXTI2_IRQn,0,0);
  11.         exti_init(EXTI_2,EXTI_INTERRUPT,EXTI_TRIG_BOTH);
  12.         syscfg_exti_line_config(EXTI_SOURCE_GPIOB,EXTI_SOURCE_PIN2);
  13.         exti_interrupt_flag_clear(EXTI_2);
  14. }

  15. /*!
  16.     \brief      Exti Interrupt2(PB2) Handler
  17.     \param[in]  none
  18.     \param[out] none
  19.     \retval     none
  20. */
  21. void EXTI2_IRQHandler(void)
  22. {
  23.        
  24.         exti_interrupt_flag_clear(EXTI_2);
  25.         //判断是否开始捕获
  26.         if(!StartCapture)
  27.         {
  28.                 return;
  29.         }
  30.        
  31.         if(gpio_input_bit_get(GPIOB,GPIO_PIN_2) == SET)
  32.         {
  33.                 //TODO 上升沿触发(读取低电平的时间)
  34.         }
  35.         else
  36.         {
  37.                 //TODO 下降沿触发(读取高电平的时间)
  38.         }
  39. }
复制代码
太晚了,先到这里。



分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /2 下一条