Files

108 lines
1.6 KiB
C

/*
* r480r.c
*
* Created on: 2021年10月15日
* Author: wuwenfeng
*/
#include "r480r.h"
#define read_infrared HAL_GPIO_ReadPin(infeaed_GPIO_Port,infeaed_Pin)
extern TIM_HandleTypeDef htim14;
uint16_t timer_100us_tick=0;
int read_bit_flag=0;
int read_char_flag=0;
char read_data_buffer[3];
char read_begin=0;
void r480_init()
{
HAL_TIM_Base_Start_IT(&htim14);
r480.times=0;
}
void read_433_exit()
{
char a=read_infrared;
int b;
if(read_begin==0)
{
if(a==0)
{
timer_100us_tick=0;
return ;
}else
{
if(timer_100us_tick>70&&timer_100us_tick<100)
{
read_begin=1;
r480.times++;
read_bit_flag=0;
read_char_flag=0;
timer_100us_tick=0;
return ;
}
}
}else
{
if(timer_100us_tick<5)
{
timer_100us_tick=0;
return ;
}else if(timer_100us_tick<12)
{
read_data_buffer[read_char_flag]<<=1;
if(a==1)
{
read_data_buffer[read_char_flag]|=0x01;
}
read_bit_flag++;
if(read_bit_flag==8)
{
read_bit_flag=0;
read_char_flag++;
if(read_char_flag==3)
{
//got data
read_char_flag=0;
timer_100us_tick=0;
r480.add[0]=read_data_buffer[0];
r480.add[1]=read_data_buffer[1];
r480.key=read_data_buffer[2];
}
}
timer_100us_tick=0;
return ;
}else//time out
{
read_begin=0;
timer_100us_tick=0;
return ;
}
}
}
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
switch(GPIO_Pin)
{
case infeaed_Pin:
read_433_exit();
return ;
break;
}
}
void HAL_TIM_PeriodElapsedCallback(TIM_HandleTypeDef *htim)//100us
{
if (htim == (&htim14))
{
timer_100us_tick++;
}
}