EV1527解码,我也贡献一个,抗干扰,自适应, 经测试比买的解码成功率高,具体多少没计算,通过示波器看到;
/*
中断处理函数 、每次中断查询一下电平;
手册16个CLK(一个数据位)的时间是
最大4.24ms(4240us)/16= 265us; 最小230us/16=14us; 分频时间是4us;
;
同步头高电平至少4个时钟;识别同步头分2步
第一步高电平时间大于等于40us,小于265*4*1.2 = 1060*1.2=1270us;
第二步 低电平时间是高电平时间的31倍,留20%余量26倍-36倍之间;
计算电平时间 (高电平时间 + 低电平时间) / 32 ;
数据宽时间要在这个数值的 正负20% 之间
*/
INTERRUPT_HANDLER(EXTI_PORTA_IRQHandler, 3)
{
static U16 data_h_time; //
static U16 data_l_time; //
static U16 bit_time_min;
static U16 bit_time_max;
static U8 decode_KEY;
static U32 decode_ID;
U16 temp;
static U8 ev1527_rx_last;
U16 ev1527_new_time;
disableInterrupts();
ev1527_new_time = (uint16_t)TIM2->CNTRH << 8;
ev1527_new_time |= (uint16_t)(TIM2->CNTRL);
if(EV1527_RX) //接收编码高电平
{
if(ev1527_rx_last==0) //上次是低电平,有跳变
{
EV1527_COUNT_CLEAR;
if(ev1527_decode_state>sync_h)
<