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

標(biāo)題: STM32單片機(jī)+SX1278官方源碼分享 [打印本頁(yè)]

作者: shw7610    時(shí)間: 2019-5-17 16:52
標(biāo)題: STM32單片機(jī)+SX1278官方源碼分享
自帶收發(fā)功能,支持SX1272/1276/1278

  1. #include <string.h>
  2. #include <stdint.h>
  3. #include <stdbool.h>
  4. #include "platform.h"
  5. #include "led.h"

  6. #if USE_UART
  7. #include "uart.h"
  8. #endif

  9. #include "radio.h"


  10. #define BUFFER_SIZE                                 9 // Define the payload size here


  11. static uint16_t BufferSize = BUFFER_SIZE;                        // RF buffer size
  12. static uint8_t Buffer[BUFFER_SIZE];                                        // RF buffer

  13. static uint8_t EnableMaster = true;                                 // Master/Slave selection

  14. tRadioDriver *Radio = NULL;

  15. const uint8_t PingMsg[] = "PING";
  16. const uint8_t PongMsg[] = "PONG";

  17. /*
  18. * Manages the master operation
  19. */
  20. void OnMaster( void )
  21. {
  22.     uint8_t i;

  23.     switch( Radio->Process( ) )
  24.     {
  25.     case RF_RX_TIMEOUT:
  26.         // Send the next PING frame
  27.         Buffer[0] = 'P';
  28.         Buffer[1] = 'I';
  29.         Buffer[2] = 'N';
  30.         Buffer[3] = 'G';
  31.         for( i = 4; i < BufferSize; i++ )
  32.         {
  33.             Buffer[i] = i - 4;
  34.         }
  35.         Radio->SetTxPacket( Buffer, BufferSize );
  36.         break;
  37.     case RF_RX_DONE:
  38.         Radio->GetRxPacket( Buffer, ( uint16_t* )&BufferSize );

  39.         if( BufferSize > 0 )
  40.         {
  41.             if( strncmp( ( const char* )Buffer, ( const char* )PongMsg, 4 ) == 0 )
  42.             {
  43.                 // Indicates on a LED that the received frame is a PONG
  44.                 LedToggle( LED_GREEN );

  45.                 // Send the next PING frame            
  46.                 Buffer[0] = 'P';
  47.                 Buffer[1] = 'I';
  48.                 Buffer[2] = 'N';
  49.                 Buffer[3] = 'G';
  50.                 // We fill the buffer with numbers for the payload
  51.                 for( i = 4; i < BufferSize; i++ )
  52.                 {
  53.                     Buffer[i] = i - 4;
  54.                 }
  55.                 Radio->SetTxPacket( Buffer, BufferSize );
  56.             }
  57.             else if( strncmp( ( const char* )Buffer, ( const char* )PingMsg, 4 ) == 0 )
  58.             { // A master already exists then become a slave
  59.                 EnableMaster = false;
  60.                 LedOff( LED_RED );
  61.             }
  62.         }            
  63.         break;
  64.     case RF_TX_DONE:
  65.         // Indicates on a LED that we have sent a PING
  66.         LedToggle( LED_RED );
  67.         Radio->StartRx( );
  68.         break;
  69.     default:
  70.         break;
  71.     }
  72. }

  73. /*
  74. * Manages the slave operation
  75. */
  76. void OnSlave( void )
  77. {
  78.     uint8_t i;

  79.     switch( Radio->Process( ) )
  80.     {
  81.     case RF_RX_DONE:
  82.         Radio->GetRxPacket( Buffer, ( uint16_t* )&BufferSize );

  83.         if( BufferSize > 0 )
  84.         {
  85.             if( strncmp( ( const char* )Buffer, ( const char* )PingMsg, 4 ) == 0 )
  86.             {
  87.                 // Indicates on a LED that the received frame is a PING
  88.                 LedToggle( LED_GREEN );

  89.                // Send the reply to the PONG string
  90.                 Buffer[0] = 'P';
  91.                 Buffer[1] = 'O';
  92.                 Buffer[2] = 'N';
  93.                 Buffer[3] = 'G';
  94.                 // We fill the buffer with numbers for the payload
  95.                 for( i = 4; i < BufferSize; i++ )
  96.                 {
  97.                     Buffer[i] = i - 4;
  98.                 }

  99.                 Radio->SetTxPacket( Buffer, BufferSize );
  100.             }
  101.         }
  102.         break;
  103.     case RF_TX_DONE:
  104.         // Indicates on a LED that we have sent a PONG
  105.         LedToggle( LED_RED );
  106.         Radio->StartRx( );
  107.         break;
  108.     default:
  109.         break;
  110.     }
  111. }


  112. /*
  113. * Main application entry point.
  114. */
  115. int main( void )
  116. {
  117.     BoardInit( );

  118.     Radio = RadioDriverInit( );

  119.     Radio->Init( );

  120.     Radio->StartRx( );

  121.     while( 1 )
  122.     {
  123.         if( EnableMaster == true )
  124.         {
  125.             OnMaster( );
  126.         }
  127.         else
  128.         {
  129.             OnSlave( );
  130.         }   
  131. #if( PLATFORM == SX12xxEiger ) && ( USE_UART == 1 )

  132.         UartProcess( );

  133.         {
  134.             uint8_t data = 0;
  135.             if( UartGetChar( &data ) == UART_OK )
  136.             {
  137.                 UartPutChar( data );
  138.             }
  139.         }
  140. #endif        
  141.     }
  142. #ifdef __GNUC__
  143.     return 0;
  144. #endif
  145. }
復(fù)制代碼
全部資料51hei下載地址:
semtech驅(qū)動(dòng)源碼SX12xxDrivers-2.0.0.7z (577.25 KB, 下載次數(shù): 109)

作者: zailushang...    時(shí)間: 2020-12-17 11:08
這是stm32的程序
作者: 993347045    時(shí)間: 2021-11-3 00:04
十分感謝分享代碼,學(xué)習(xí)了~~~




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 国产午夜精品久久久久久久 | 黄色一级视频免费看 | 国产欧美日韩视频 | 国产精品欧美激情 | 亚洲不卡视频 | 成人av在线网站 | 午夜快播 | 久久久久久久久久国产精品 | 亚洲精品观看 | 欧美性猛交xx | 国产精品久久久久久无人区 | 久久一级视频 | 黄色国产| av片在线观看 | 成年人小视频 | 黄色片免费看 | 亚洲国产欧美日韩在线 | 国产91在线播放 | 国产不卡在线观看 | 成人欧美日韩 | 亚洲国产中文字幕 | 成人午夜在线视频 | 免费观看a级片 | 亚洲国产一区在线 | 交换多p群乱高h文 | 日韩不卡一区二区 | 亚洲国产精| 欧美精品亚洲精品 | 国产精品一区二区av | 三级av在线 | 成人看片网 | 国产精品99久久久久久久久久久久 | 成人av一区二区三区在线观看 | 日韩视频免费看 | 久久视频一区二区 | 欧美视频区| 国产精品成人国产乱 | 欧美午夜精品一区二区三区 | 黄色大片在线 | 成人在线免费视频观看 | 深夜福利视频在线观看 |