找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 4394|回復(fù): 2
收起左側(cè)

Stm8S CC1101接收及發(fā)送源程序

[復(fù)制鏈接]
ID:324601 發(fā)表于 2018-5-7 21:53 | 顯示全部樓層 |閱讀模式
根據(jù)澤耀官方的STM8L101的例程移植的STM8S103 CC1101接收發(fā)送程序引腳有所變化,具體參見CC1101.h 和 SPI.h 的引腳定義

適用于澤耀及億佰特的CC1101 SPI 接口模塊,同理,改改就能適用于24L01模塊

單片機(jī)源程序如下:
  1. #define         __CC1101_TX_TEST__                        //**@@ 如果測(cè)試發(fā)送功能則需要定義該宏,如果測(cè)試接收則需要屏蔽該宏 **@@//
  2. //#define         __USE_SOFT_SPI_INTERFACE__                //**@@ 如果使用軟件SPI則需要定義該宏,反之如果使用硬件SPI則需要屏蔽該宏 **@@//


  3. #include "main.h"                                        //main.h 中含有TX/RX、軟件SPI/硬件SPI選擇配置選項(xiàng)
  4. #include "stdio.h"

  5. const char *g_Ashining = "ashining";
  6. uint8_t g_TxMode = 0;
  7. uint8_t g_UartRxBuffer[ 100 ] = { 0 };
  8. uint8_t g_RF24L01RxBuffer[ 32 ] = { 0 };



  9. /**
  10.   * @brief :主函數(shù)
  11.   * @param :無
  12.   * @note  :無
  13.   * @retval:無
  14.   */
  15. int main( void )
  16. {       
  17.         uint8_t i = 0;

  18.         //串口初始化
  19.         drv_uart_init( 9600 );
  20.        
  21.         //LED初始化
  22.         drv_led_init( );
  23.        
  24.         //SPI初始化
  25.         drv_spi_init( );
  26.        
  27.         //CC1101初始化
  28.         CC1101_Init( );

  29.         
  30.         for( i = 0; i < 3; i++ )
  31.         {
  32.                 led_red_flashing( );
  33.                 led_green_flashing( );
  34.                 drv_delay_ms( 500 );
  35.         }
  36.        
  37. #ifdef        __CC1101_TX_TEST__               
  38. //=========================================================================================//       
  39. //*****************************************************************************************//
  40. //************************************* 發(fā)送 **********************************************//
  41. //*****************************************************************************************//
  42. //=========================================================================================//       
  43.        
  44.         //按鍵初始化
  45.         drv_button_init( );

  46.         while( 1 )       
  47.         {
  48.                 //模式切換
  49.                 if( BUTOTN_PRESS_DOWN == drv_button_check( ))
  50.                 {
  51.                         g_TxMode = 1 - g_TxMode;                //模式會(huì)在 TX_MODE_1( 0 ),TX_MODE_2( 1 )之間切換
  52.                        
  53.                         //狀態(tài)顯示清零
  54.                         led_green_off( );
  55.                         led_red_off( );
  56.                        
  57.                         if( TX_MODE_1 == g_TxMode )
  58.                         {
  59.                                 for( i = 0; i < 3; i++ )               
  60.                                 {
  61.                                         led_red_flashing( );        //固定發(fā)送模式,紅燈閃爍3次
  62.                                         drv_delay_ms( 300 );               
  63.                                 }
  64.                         }
  65.                         else
  66.                         {
  67.                                 for( i = 0; i < 6; i++ )
  68.                                 {
  69.                                         led_green_flashing( );        //串口發(fā)送模式,綠燈閃爍3次
  70.                                         drv_delay_ms( 300 );
  71.                                 }
  72.                         }
  73.                 }
  74.                
  75.                 //發(fā)送
  76.                 if( TX_MODE_1 == g_TxMode )
  77.                 {
  78.                         CC1101_Tx_Packet( (uint8_t *)g_Ashining, 8 , ADDRESS_CHECK );                //模式1發(fā)送固定字符,1S一包
  79.                         drv_delay_ms( 1000 );       
  80.                         led_red_flashing( );
  81.                         //drv_uart_tx_bytes("sending\r\n",9);
  82.                         printf("固定發(fā)送模式\r\n");
  83.                        
  84.                 }
  85.                 else
  86.                 {       
  87.                         //查詢串口數(shù)據(jù)
  88.                         //drv_uart_tx_bytes("uart...\r\n",9);
  89.                         printf("串口發(fā)送模式\r\n");
  90.                         i = drv_uart_rx_bytes( g_UartRxBuffer );
  91.                        
  92.                         if( 0 != i )
  93.                         {
  94.                                 CC1101_Tx_Packet( g_UartRxBuffer, i , ADDRESS_CHECK );
  95.                                 led_red_flashing( );
  96.                         }
  97.                 }
  98.         }
  99.        
  100. #else               
  101. //=========================================================================================//       
  102. //*****************************************************************************************//
  103. //************************************* 接收 **********************************************//
  104. //*****************************************************************************************//
  105. //=========================================================================================//       
  106.         {
  107.                
  108.                 //printf("接收數(shù)據(jù)模式");
  109.                 drv_uart_tx_bytes("receive\r\n",9);
  110.                 while( 1 )
  111.                 {
  112.                         CC1101_Clear_RxBuffer( );
  113.                         CC1101_Set_Mode( RX_MODE );
  114.                         i = CC1101_Rx_Packet( g_RF24L01RxBuffer );                //接收字節(jié)
  115.                         
  116.                         if( 0 != i )
  117.                         {
  118.                                 led_green_flashing( );
  119.                                 drv_uart_tx_bytes( g_RF24L01RxBuffer, i );        //輸出接收到的字節(jié)
  120.                         }
  121.                         drv_delay_ms(500);
  122.                         
  123.                 }
  124.         }       
  125. #endif
  126.        
  127. }

  128. #ifdef USE_FULL_ASSERT

  129. /**
  130.   * @brief  Reports the name of the source file and the source line number
  131.   *   where the assert_param error has occurred.
  132.   * @param file: pointer to the source file name
  133.   * @param line: assert_param error line source number
  134.   * @retval None
  135.   */
  136. void assert_failed(uint8_t* file, uint32_t line)
  137. {
  138.   /* User can add his own implementation to report the file name and line number,
  139.      ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */

  140.   /* Infinite loop */
  141.   while (1)
  142.   {
  143.   }
  144. }
  145. #endif

  146. /**
  147.   * @}
  148.   */
復(fù)制代碼

所有資料51hei提供下載:
C1101.rar (1.71 MB, 下載次數(shù): 90)


回復(fù)

使用道具 舉報(bào)

ID:186637 發(fā)表于 2018-10-16 16:43 | 顯示全部樓層
謝謝分享!學(xué)習(xí)學(xué)習(xí)!
回復(fù)

使用道具 舉報(bào)

ID:618877 發(fā)表于 2019-10-2 21:21 來自手機(jī) | 顯示全部樓層
謝謝分享
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表