找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3641|回复: 2
收起左侧

Stm8S CC1101接收及发送源程序

[复制链接]
ID:324601 发表于 2018-5-7 21:53 | 显示全部楼层 |阅读模式
根据泽耀官方的STM8L101的例程移植的STM8S103 CC1101接收发送程序引脚有所变化,具体参见CC1101.h 和 SPI.h 的引脚定义

适用于泽耀及亿佰特的CC1101 SPI 接口模块,同理,改改就能适用于24L01模块

单片机源程序如下:
  1. #define         __CC1101_TX_TEST__                        //**@@ 如果测试发送功能则需要定义该宏,如果测试接收则需要屏蔽该宏 **@@//
  2. //#define         __USE_SOFT_SPI_INTERFACE__                //**@@ 如果使用软件SPI则需要定义该宏,反之如果使用硬件SPI则需要屏蔽该宏 **@@//


  3. #include "main.h"                                        //main.h 中含有TX/RX、软件SPI/硬件SPI选择配置选项
  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 :主函数
  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. //************************************* 发送 **********************************************//
  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;                //模式会在 TX_MODE_1( 0 ),TX_MODE_2( 1 )之间切换
  52.                        
  53.                         //状态显示清零
  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( );        //固定发送模式,红灯闪烁3次
  62.                                         drv_delay_ms( 300 );               
  63.                                 }
  64.                         }
  65.                         else
  66.                         {
  67.                                 for( i = 0; i < 6; i++ )
  68.                                 {
  69.                                         led_green_flashing( );        //串口发送模式,绿灯闪烁3次
  70.                                         drv_delay_ms( 300 );
  71.                                 }
  72.                         }
  73.                 }
  74.                
  75.                 //发送
  76.                 if( TX_MODE_1 == g_TxMode )
  77.                 {
  78.                         CC1101_Tx_Packet( (uint8_t *)g_Ashining, 8 , ADDRESS_CHECK );                //模式1发送固定字符,1S一包
  79.                         drv_delay_ms( 1000 );       
  80.                         led_red_flashing( );
  81.                         //drv_uart_tx_bytes("sending\r\n",9);
  82.                         printf("固定发送模式\r\n");
  83.                        
  84.                 }
  85.                 else
  86.                 {       
  87.                         //查询串口数据
  88.                         //drv_uart_tx_bytes("uart...\r\n",9);
  89.                         printf("串口发送模式\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("接收数据模式");
  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 );                //接收字节
  115.                         
  116.                         if( 0 != i )
  117.                         {
  118.                                 led_green_flashing( );
  119.                                 drv_uart_tx_bytes( g_RF24L01RxBuffer, i );        //输出接收到的字节
  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.   */
复制代码

所有资料51hei提供下载:
C1101.rar (1.71 MB, 下载次数: 90)
回复

使用道具 举报

ID:186637 发表于 2018-10-16 16:43 | 显示全部楼层
谢谢分享!学习学习!
回复

使用道具 举报

ID:618877 发表于 2019-10-2 21:21 来自手机 | 显示全部楼层
谢谢分享
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表