久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3727|回復: 1
打印 上一主題 下一主題
收起左側

一個433 315 RF的STM32解碼程序

  [復制鏈接]
跳轉到指定樓層
樓主
ID:450849 發表于 2020-10-23 13:04 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
RF 協議 同步信號 300us高電平 10MS 低電平,數據 “0” 300us 高電平 1ms 低電平。
                                                                  數據 “1”  1ms 高電平 300us低電平。


只需要配置一個中斷,將這個函數放在中斷里調用,
void ir_interrupt_drives(void)//中斷50us中調用
在main 中 while(1)里面 調用    IR_Process(); 即可實現RF的解碼。

單片機源程序如下:

  1. // Copyright (c) all rights reserved
  2. //********************版權和版本的聲明**********************

  3. //************************項目信息**************************
  4. //項目名稱:
  5. //客戶名稱:
  6. //************************文件信息**************************
  7. //文件名稱:    hal_ir.c
  8. //文件頭文件:  hal_ir.h
  9. //作    者:zenghb
  10. //起止時間:2020年3月26日11:58:41
  11. //文件版本:V2.0
  12. //校 驗 和:
  13. //************************硬件信息**************************
  14. //目標器件:ob39s003
  15. //源 時 鐘:
  16. //PCBA型號:
  17. //************************平臺信息**************************
  18. //開發環境:keil
  19. //燒錄環境:
  20. //配置內容:
  21. //************************功能信息**************************
  22. //程序功能:
  23. //函數列表:
  24. //************************修改記錄**************************
  25. // <author>  <time>   <version> <desc>
  26. //1.zenghb    2020-03-26    V2.0   
  27. //2.
  28. //**********************************************************
  29. #include "hal_ir.h"


  30. #define INTERRUPT_INT4 2

  31. //-------------------------1-------------------------------------------------------------------
  32. IR_Typedef  IR1;


  33. #define IR1_DECODE_VALUE        0x87
  34. #define IR2_DECODE_VALUE        0x87
  35. #define IR3_DECODE_VALUE        0x87
  36. #define IR4_DECODE_VALUE        0x87
  37. #define IR5_DECODE_VALUE        0x87
  38. #define IR6_DECODE_VALUE        0x87

  39. //unsigned int ProcessTime;

  40. void ir_agreement_check(void)
  41. {
  42.         static unsigned char  i;             //接收紅外信號處理

  43.     IR1.IrTimeOutCnt = 20;
  44.    
  45.         IR1.Falg.bits.IrEndFlag = 0; //只要有下降沿,結束是不存在結束。
  46.        
  47.     if(IR1.Falg.bits.StartFlag)                        
  48.     {
  49.         if( IR1.IrTime < 220 && IR1.IrTime >= 180)//引導碼 TC9012的頭碼,10.0ms        
  50.                 {               
  51.                         i=0;
  52.                 }

  53.         if(!IR1.Falg.bits.IR_OK)  
  54.         {
  55.                         if(i>1)
  56.                         {
  57.                                 if(IR1.IrTime < 4 || IR1.IrTime > 23)
  58.                                 {
  59.                                          IR1.Falg.bits.StartFlag = 0;
  60.                                 }
  61.                         }
  62.                         IR1.IrData[i++] = (unsigned char)IR1.IrTime;//存儲每個電平的持續時間,用于以后判斷是0還是1
  63.                         IR1.IrTime = 0;
  64.         }
  65.         
  66.         if(i >= 24)
  67.         {
  68.             IR1.Falg.bits.IR_OK=1;
  69.             i=0;
  70.         }
  71.     }
  72.     else
  73.     {
  74.         IR1.IrTime = 0;
  75.         IR1.Falg.bits.StartFlag = 1;
  76.     }
  77. }

  78. void ir_decode(void)//紅外碼值處理函數
  79. {
  80.         unsigned char i,j, k,value;

  81.         k=1;
  82.         for(i=0;i<3;i++)
  83.         {
  84.                 for(j=1;j<=8;j++) //處理1個字節8位
  85.                 {
  86.                         value<<=1;
  87.                         if( IR1.IrData[k] > 17 && IR1.IrData[k] < 23)//大于某值為1,這個和晶振有絕對關系,這里使用12M計算,此值可以有一定誤差
  88.                         {
  89.                                 value|=0x01;
  90.                         }
  91.                         k++;
  92.                 }
  93.                 IR1.IrCode[i] = value;
  94.         }
  95.         value=0;
  96. }


  97. void IR_Process(void)
  98. {
  99.         if(IR1.Falg.bits.IR_OK)                        //如果接收好了進行紅外處理
  100.         {   
  101.                 ir_decode1();
  102.                 if(IR1.ProcessTime>0)
  103.                 {
  104.                         IR1.IrCode[0]=0;
  105.                         IR1.IrCode[1]=0;
  106.                         IR1.IrCode[2]=0;
  107.                 }
  108.                 IR1.Falg.bits.IR_OK=0;
  109.                 if(IR1.IrCode[0]==0xaa && IR1.IrCode[1]==0xaa)
  110.                 {
  111.                         IR1.ProcessTime = 10000;
  112.                 }
  113.         }
  114. }

  115. void ir_interrupt_drives(void)//中斷100us中調用
  116. {
  117.         static unsigned char  CheckCnt,IRStatus=0;

  118.         if(IR1.ProcessTime>0)
  119.         {
  120.                 IR1.ProcessTime--;
  121.         }
  122.         if(PIN_IR1)
  123.         {       
  124.                 if(++CheckCnt > 2)//在中斷中調用 值為2即可,快速掃描,適當加長可提高防抖效果。
  125.                 {
  126.                         CheckCnt = 2;
  127.                         if(IRStatus==0)
  128.                         {
  129.                                 ir_agreement_check1();//下降沿
  130.                         }
  131.                         IRStatus =1;
  132.                 }
  133.         }
  134.         else
  135.         {
  136.                 IR1.IrTime++;
  137.                 if(CheckCnt)
  138.                 {
  139.                         CheckCnt--;
  140.                 }
  141.                 else
  142.                 {
  143.                         if(IRStatus)
  144.                         {
  145.                                 IRStatus = 0;
  146.                         }
  147.                 }
  148.         }
  149. }
復制代碼

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏8 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:957696 發表于 2021-8-1 15:08 來自手機 | 只看該作者
不用中斷方式行嗎?
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩在线小视频 | 亚洲欧美中文日韩在线v日本 | 久久久久国产一级毛片 | 国产在线视频一区二区 | 四虎影院在线免费观看 | 中文字幕日韩欧美 | 伊人欧美视频 | 午夜免费视频 | 九九国产| 国产成人91视频 | 99久久精品免费看国产高清 | 国产福利91精品 | 亚洲精品一| 91热在线| 91麻豆精品国产91久久久久久 | www国产亚洲精品久久网站 | 婷婷99| 中文字幕一级毛片视频 | 毛片免费在线 | 最新国产视频 | 一区二区高清不卡 | 伦理二区| 91在线一区二区三区 | 性欧美hd| 欧美成人免费在线 | 免费看a | 午夜精品一区二区三区在线视频 | 嫩草视频入口 | 成人国产精品色哟哟 | 日韩在线视频一区 | 国产精品美女久久久久久久久久久 | 久久99久久99精品免视看婷婷 | 亚洲视频免费在线看 | 天堂一区 | 狠狠爱网址 | 国产在线精品区 | 91成人| 欧美日韩三级 | 国产精品久久久久久久久久久久久久 | 国产精品日本一区二区在线播放 | 久久久免费观看视频 |