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

標題: SI4438 Directional硬件SPI STM8S105單片機IAR代碼分享 [打印本頁]

作者: 345138275    時間: 2018-11-23 19:15
標題: SI4438 Directional硬件SPI STM8S105單片機IAR代碼分享


單片機源程序如下:
  1. #include "stm8s.h"
  2. #include "data_base.h"
  3. #include "radio.h"
  4. #include "si446x_cmd.h"
  5. #include "gpio.h"
  6. #include "delay.h"
  7. #include "user.h"

  8.    
  9. uint8_t bRadio_Process();

  10. U8   bMain_IT_Status;
  11. uint8_t RFstate;


  12. extern uint8_t tx_data[];
  13. extern  volatile uint16_t  tick_timer;

  14. #define EnableMaster   0

  15. /*
  16. Demo程序流程:Master   EnableMaster=1,發送tx_data數據包后等待接收端ack數據包,若500ms后未接收到ack數據包超時處理,若接收到ack數據包LED閃爍指示
  17.               Slaver   EnableMaster=0,接收到tx_data數據包后發送ack數據包,發送完成后LED燈閃爍指示

  18. */

  19. void main(void)
  20. {
  21.   vInitializeHW();// Initialize the Hardware and Radio

  22. #if   EnableMaster
  23.    RFstate=RFLR_STATE_TX_INIT;
  24. #else   
  25.    RFstate=RFLR_STATE_RX_INIT;
  26. #endif
  27. while(1)
  28. {
  29.     bRadio_Process();
  30. }
  31. }


  32. uint8_t bRadio_Process()
  33. {
  34. switch(RFstate)
  35. {
  36.    case RFLR_STATE_RX_INIT://接收初始化
  37.    
  38.    GPIO_WriteLow(SI4463_TX_PORT,SI4463_TX_IO);
  39.    GPIO_WriteHigh(SI4463_RX_PORT,SI4463_RX_IO);//開關切換到接收通路
  40.    vRadio_StartRX(pRadioConfiguration->Radio_ChannelNumber, 0);
  41.    tick_timer=0;
  42.    RFstate=RFLR_STATE_RX_RUNNING;
  43.    break;
  44.    
  45.    case RFLR_STATE_RX_RUNNING://接收處理
  46.      bMain_IT_Status = bRadio_Check_Tx_RX();
  47.      if(bMain_IT_Status==SI446X_CMD_GET_INT_STATUS_REP_PH_PEND_PACKET_RX_PEND_BIT)
  48.      {
  49.        if(EnableMaster)
  50.        {
  51.         RFstate=RFLR_STATE_RX_ACK_DONE;
  52.        }
  53.        else
  54.        {
  55.          RFstate=RFLR_STATE_RX_DONE;
  56.        }
  57.      }
  58.      if(tick_timer>500)
  59.      {
  60.       RFstate=RFLR_STATE_RX_TIMEOUT;
  61.      }
  62.      
  63.    break;
  64.    
  65.    case RFLR_STATE_TX_INIT://發射客戶數據包初始化
  66.      GPIO_WriteHigh(SI4463_TX_PORT,SI4463_TX_IO);
  67.      GPIO_WriteLow(SI4463_RX_PORT,SI4463_RX_IO);//開關切換到發送通路
  68.      gSampleCode_SendVariablePacket();//打包發送客戶數據包
  69.      tick_timer=0;
  70.      RFstate=RFLR_STATE_TX_RUNNING;
  71.    break;
  72.    
  73.    
  74.    case RFLR_STATE_TX_ACK_INIT://發射ack數據包初始化
  75.      GPIO_WriteHigh(SI4463_TX_PORT,SI4463_TX_IO);
  76.      GPIO_WriteLow(SI4463_RX_PORT,SI4463_RX_IO);//開關切換到發送通路
  77.      vSampleCode_SendAcknowledge();//打包發送ACK數據包
  78.      tick_timer=0;
  79.      RFstate=RFLR_STATE_TX_RUNNING;
  80.    break;
  81.    
  82.    
  83.    case RFLR_STATE_TX_RUNNING://發射處理
  84.      bMain_IT_Status = bRadio_Check_Tx_RX();
  85.      if(bMain_IT_Status==SI446X_CMD_GET_INT_STATUS_REP_PH_PEND_PACKET_SENT_PEND_BIT)
  86.      {
  87.        if(EnableMaster)
  88.        {
  89.         RFstate=RFLR_STATE_TX_DONE;
  90.        }
  91.        else
  92.        {
  93.         RFstate=RFLR_STATE_TX_ACK_DONE;
  94.        }
  95.      }
  96.      if(tick_timer>500)
  97.      {
  98.       RFstate=RFLR_STATE_TX_TIMEOUT;
  99.      }
  100.    break;
  101.      
  102.    
  103.    case RFLR_STATE_RX_DONE://接收客戶數據包完成
  104.      
  105.        if(gSampleCode_StringCompare(customRadioPacket, tx_data,20)==TRUE)
  106.        {
  107.         RFstate=RFLR_STATE_TX_ACK_INIT;//收到正確數據包后發射ack數據包
  108.        }
  109.        else
  110.        {
  111.          RFstate=RFLR_STATE_RX_INIT;
  112.        }
  113.    break;
  114.    
  115.    case RFLR_STATE_RX_ACK_DONE://接收ack數據包完成
  116.       
  117.        if(gSampleCode_StringCompare(customRadioPacket, "ACK",3)==TRUE)
  118.        {
  119.           GPIO_WriteLow(RF_LED1_PORT,RF_LED1_IO);//LED指示燈閃爍
  120.           m928_delay(20);
  121.           GPIO_WriteHigh(RF_LED1_PORT,RF_LED1_IO);
  122.         }
  123.         
  124.         m928_delay(100);
  125.         RFstate=RFLR_STATE_TX_INIT;
  126.    break;
  127.       
  128.    case RFLR_STATE_TX_DONE://發射完客戶數據包
  129.      
  130.       RFstate=RFLR_STATE_RX_INIT;
  131.    break;
  132.    
  133.    case RFLR_STATE_TX_ACK_DONE://發射完ack數據包
  134.      
  135.         GPIO_WriteLow(RF_LED1_PORT,RF_LED1_IO);//LED燈閃爍
  136.         m928_delay(20);
  137.         GPIO_WriteHigh(RF_LED1_PORT,RF_LED1_IO);
  138.         
  139.         RFstate=RFLR_STATE_RX_INIT;
  140.       
  141.    break;
  142.    
  143.    case RFLR_STATE_TX_TIMEOUT://發射超時
  144.      
  145.        if(EnableMaster)
  146.        {
  147.         RFstate=RFLR_STATE_TX_INIT;
  148.        }
  149.        else
  150.        {
  151.         RFstate=RFLR_STATE_RX_INIT;
  152.        }
  153.    break;
  154.      
  155.    case RFLR_STATE_RX_TIMEOUT://接收超時
  156.      
  157.        if(EnableMaster)
  158.        {
  159.         RFstate=RFLR_STATE_TX_INIT;
  160.        }
  161.        else
  162.        {
  163.         RFstate=RFLR_STATE_RX_INIT;
  164.        }
  165.    break;
  166.    
  167.    default:break;
  168. }
  169. return RFstate;
  170. }
復制代碼

所有資料51hei提供下載:
SI4438 Directional 硬件spi STM8S105 IAR.rar (10.74 MB, 下載次數: 34)







歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 久久精品国产免费 | 青草久久久 | 久热国产精品 | 伊人色播 | 一区二区三区久久久 | 四虎影视最新网址 | 亚洲精品乱码久久久久久动漫 | 国产性猛交96 | 欧美国产精品一区二区 | 夜夜躁狠狠躁日日躁av | 一级黄色免费看 | 久久久黄色片 | 中文字幕网址在线 | 亚洲综合在线视频 | 精品久久一区二区 | 国产尤物视频 | 最新日韩在线 | 午夜黄视频 | 亚洲一区二区三区在线播放 | 日韩在线免费播放 | 一区二区三区中文字幕 | 欧美另类视频 | 依人在线 | 亚洲欧美中文字幕 | 中文有码在线观看 | 成年人国产 | 国产精品久久久国产盗摄 | www.com国产| 亚洲欧美中文字幕 | 九九热在线精品 | 亚洲精品二区 | 国产欧美久久久 | 免费一区二区三区 | 99视频在线播放 | www.三级| 天天干天天插 | 午夜免费福利 | 日韩伦理一区二区 | 激情视频一区 | 国产永久视频 | 成人午夜 |