TA的每日心情 | 怒 2023-7-25 22:49 |
---|
签到天数: 385 天 连续签到: 1 天 [LV.9]以坛为家II
|
接上篇,红外解码首先是捕捉到红外数据,我们第一篇里的原理图:
红外数据是接在PB2上,所以我们要使用外部中断来测量PB2上的高低电平时间,然把我这些时间存储起来。
外部中断初始化函数和中断处理函数如下:- /*!
- \brief initialize Exti Interrupt(PB2)
- \param[in] none
- \param[out] none
- \retval none
- */
- void InitExtiInterrupt(void)
- {
- rcu_periph_clock_enable(RCU_SYSCFG);
- nvic_irq_enable(EXTI2_IRQn,0,0);
- exti_init(EXTI_2,EXTI_INTERRUPT,EXTI_TRIG_BOTH);
- syscfg_exti_line_config(EXTI_SOURCE_GPIOB,EXTI_SOURCE_PIN2);
- exti_interrupt_flag_clear(EXTI_2);
- }
- /*!
- \brief Exti Interrupt2(PB2) Handler
- \param[in] none
- \param[out] none
- \retval none
- */
- void EXTI2_IRQHandler(void)
- {
-
- exti_interrupt_flag_clear(EXTI_2);
- //判断是否开始捕获
- if(!StartCapture)
- {
- return;
- }
-
- if(gpio_input_bit_get(GPIOB,GPIO_PIN_2) == SET)
- {
- //TODO 上升沿触发(读取低电平的时间)
- }
- else
- {
- //TODO 下降沿触发(读取高电平的时间)
- }
- }
复制代码 太晚了,先到这里。
|
|