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

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

作者: 345138275    時間: 2018-11-23 19:15
標(biāo)題: 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,發(fā)送tx_data數(shù)據(jù)包后等待接收端ack數(shù)據(jù)包,若500ms后未接收到ack數(shù)據(jù)包超時處理,若接收到ack數(shù)據(jù)包LED閃爍指示
  17.               Slaver   EnableMaster=0,接收到tx_data數(shù)據(jù)包后發(fā)送ack數(shù)據(jù)包,發(fā)送完成后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);//開關(guān)切換到接收通路
  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://發(fā)射客戶數(shù)據(jù)包初始化
  66.      GPIO_WriteHigh(SI4463_TX_PORT,SI4463_TX_IO);
  67.      GPIO_WriteLow(SI4463_RX_PORT,SI4463_RX_IO);//開關(guān)切換到發(fā)送通路
  68.      gSampleCode_SendVariablePacket();//打包發(fā)送客戶數(shù)據(jù)包
  69.      tick_timer=0;
  70.      RFstate=RFLR_STATE_TX_RUNNING;
  71.    break;
  72.    
  73.    
  74.    case RFLR_STATE_TX_ACK_INIT://發(fā)射ack數(shù)據(jù)包初始化
  75.      GPIO_WriteHigh(SI4463_TX_PORT,SI4463_TX_IO);
  76.      GPIO_WriteLow(SI4463_RX_PORT,SI4463_RX_IO);//開關(guān)切換到發(fā)送通路
  77.      vSampleCode_SendAcknowledge();//打包發(fā)送ACK數(shù)據(jù)包
  78.      tick_timer=0;
  79.      RFstate=RFLR_STATE_TX_RUNNING;
  80.    break;
  81.    
  82.    
  83.    case RFLR_STATE_TX_RUNNING://發(fā)射處理
  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://接收客戶數(shù)據(jù)包完成
  104.      
  105.        if(gSampleCode_StringCompare(customRadioPacket, tx_data,20)==TRUE)
  106.        {
  107.         RFstate=RFLR_STATE_TX_ACK_INIT;//收到正確數(shù)據(jù)包后發(fā)射ack數(shù)據(jù)包
  108.        }
  109.        else
  110.        {
  111.          RFstate=RFLR_STATE_RX_INIT;
  112.        }
  113.    break;
  114.    
  115.    case RFLR_STATE_RX_ACK_DONE://接收ack數(shù)據(jù)包完成
  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://發(fā)射完客戶數(shù)據(jù)包
  129.      
  130.       RFstate=RFLR_STATE_RX_INIT;
  131.    break;
  132.    
  133.    case RFLR_STATE_TX_ACK_DONE://發(fā)射完ack數(shù)據(jù)包
  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://發(fā)射超時
  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. }
復(fù)制代碼

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







歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 精品在线播放 | 天天色天天射天天干 | 久久久久久久国产 | 日韩在线电影 | 欧美福利| 亚洲一区二区三区免费在线观看 | 国产精品永久免费观看 | 蜜桃av鲁一鲁一鲁一鲁 | 91亚洲国产成人精品一区二三 | 国产精品久久久久久久免费大片 | 亚洲精品久久久久国产 | 亚洲精品一区在线观看 | 狠狠干美女| 国内精品久久久久久久影视简单 | 国产精品久久久久久影院8一贰佰 | 精品影院 | 欧美不卡 | 精品国产乱码久久久久久中文 | 在线观看中文字幕视频 | 久久69精品久久久久久国产越南 | 伊人91在线| 天堂一区 | 91麻豆精品国产91久久久更新资源速度超快 | 亚洲天堂一区 | 亚洲二区视频 | 国产成年人小视频 | 亚洲成人午夜在线 | 午夜小电影| 欧美日韩网站 | av三级 | 深夜福利影院 | 精品av | 亚洲精品久久嫩草网站秘色 | 九九热久久免费视频 | 黄色a视频 | 亚洲专区在线 | 国产在线一区观看 | 国产欧美精品在线观看 | 久久69精品久久久久久久电影好 | 欧美一级二级视频 | 国产一区二区三区日韩 |