赞
踩
uint32 high[1000]; //定时数据 uint32 count=0; //跳变沿个数 void PORTA_IRQHandler(void) //PORTA中断函数 { PORTA->ISFR = 0xffffffff;//清除中断标志位 /*把时间保存到数组,定时时间=定时器计数值/总线时钟*/ high[count++]= (0xffffffff - PIT->CHANNEL[0].CVAL)/bus_clk_mhz; pit_time_start(pit0); //启动下一次计时 } int main(void) { int i,Double=0,effective=0; gpio_init(E26,GPO,1);//LED指示灯 gpio_init(A19,GPO,1);//红外接收引脚 uart_init(uart4,115200);//串口初始化,波特率115200 pit_init_ms(pit0,1000);//设置定时1秒 port_init(A19,ALT1|PULLUP|IRQ_FALLING);//设置接收管引脚上升沿和下降沿产生中断 while(1) { gpio_set(E26,1); //先让指示灯灭 while(count<1); //等待第一个跳变沿 pit_time_start(pit0); //启动计时 gpio_set(E26,0); //指示灯亮 pit_delay_ms(pit2,500); //延时,等待跳变沿中断记录完成 printf("count:%lu\n\n",count);//显示总跳变沿个数 for(i=1;i<count;i++) //循环,显示计时数据 { if(high[i]>5)//滤掉抖动 { effective++; //计算有效的跳变沿个数 printf("%lu\n",high[i]);//显示微秒数(lu:无符号长整数) if(++Double==2){printf("\n");Double=0;}//每隔两个数空出一行 if(high[i]>19000)printf("\n");//遇到连接码也空出一行 } } printf("effect:%d",effective/2);//编码数据长度=有效长度/2(高-低表示1位) //为下一次测量清零 effective=0; for(i=0;i<count;i++) { high[i]=0; } count=0; pit_delay_ms(pit2,1500); } }
4.捕获结果:
海尔空调:制冷24°,自动风向,不扫风,开
每一段的第一行表示红外发射的时间,第二行表示不发射的时间。单位us
count:825 3130 //引导码 3004 3131 //引导码 4380 617 1601 617 481 617 1601 617 480 616 481 617 1601 617 1601 617 481 617 1601 617 481 617 481 617 481 616 482 617 481 616 481 616 482 617 1601 617 1601 617 1600 616 481 616 482 616 482 616 482 616 482 616 482 617 481 617 481 616 482 616 482 616 482 616 482 616 482 616 482 617 481 616 482 615 481 616 482 616 482 616 482 616 482 616 482 616 482 617 1601 616 481 616 482 616 482 616 482 616 482 616 482 616 482 616 482 616 481 616 482 616 482 616 482 616 482 616 482 616 482 616 1601 616 482 616 482 616 482 616 482 616 482 616 482 616 482 616 482 616 482 616 482 616 481 616 482 616 482 616 482 616 482 616 482 616 482 616 482 615 482 616 482 616 482 616 482 616 483 616 482 616 482 616 482 616 482 616 482 616 482 616 482 616 482 616 482 616 482 616 482 616 482 616 482 616 482 616 482 616 482 616 482 616 482 616 482 616 1601 616 482 616 1601 616 482 616 1601 615 481 616 482 616 1601 616 482 616 1602 616 1601 616 //结束码 40000 effect:114
格力空调:制冷16°,自动风速,左右扫风,开灯光和显示温度,开空调
count:547 //起始码 9070 4444 670 1627 671 515 671 516 671 1627 670 515 671 516 670 1627 671 515 670 516 670 516 670 516 669 516 669 517 669 517 668 517 669 517 669 517 669 516 669 517 669 517 669 516 669 1629 669 517 669 517 669 516 668 518 669 517 669 517 669 1628 669 517 669 1628 669 517 669 517 669 1628 669 517 //连接码 669 19980 669 1629 669 517 669 517 668 518 669 1629 668 517 669 517 669 517 669 1629 669 517 669 517 669 517 669 517 669 1628 668 517 668 517 669 517 669 518 669 517 669 517 669 517 669 517 668 518 669 518 669 517 669 517 669 517 669 517 669 517 668 1629 668 1629 669 517 //结束码 668 40012 effect:69
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。