根據澤耀官方的STM8L101的例程移植的STM8S103 CC1101接收發送程序引腳有所變化,具體參見CC1101.h 和 SPI.h 的引腳定義
適用于澤耀及億佰特的CC1101 SPI 接口模塊,同理,改改就能適用于24L01模塊
單片機源程序如下:
- #define __CC1101_TX_TEST__ //**@@ 如果測試發送功能則需要定義該宏,如果測試接收則需要屏蔽該宏 **@@//
- //#define __USE_SOFT_SPI_INTERFACE__ //**@@ 如果使用軟件SPI則需要定義該宏,反之如果使用硬件SPI則需要屏蔽該宏 **@@//
- #include "main.h" //main.h 中含有TX/RX、軟件SPI/硬件SPI選擇配置選項
- #include "stdio.h"
- const char *g_Ashining = "ashining";
- uint8_t g_TxMode = 0;
- uint8_t g_UartRxBuffer[ 100 ] = { 0 };
- uint8_t g_RF24L01RxBuffer[ 32 ] = { 0 };
- /**
- * @brief :主函數
- * @param :無
- * @note :無
- * @retval:無
- */
- int main( void )
- {
- uint8_t i = 0;
- //串口初始化
- drv_uart_init( 9600 );
-
- //LED初始化
- drv_led_init( );
-
- //SPI初始化
- drv_spi_init( );
-
- //CC1101初始化
- CC1101_Init( );
-
- for( i = 0; i < 3; i++ )
- {
- led_red_flashing( );
- led_green_flashing( );
- drv_delay_ms( 500 );
- }
-
- #ifdef __CC1101_TX_TEST__
- //=========================================================================================//
- //*****************************************************************************************//
- //************************************* 發送 **********************************************//
- //*****************************************************************************************//
- //=========================================================================================//
-
- //按鍵初始化
- drv_button_init( );
- while( 1 )
- {
- //模式切換
- if( BUTOTN_PRESS_DOWN == drv_button_check( ))
- {
- g_TxMode = 1 - g_TxMode; //模式會在 TX_MODE_1( 0 ),TX_MODE_2( 1 )之間切換
-
- //狀態顯示清零
- led_green_off( );
- led_red_off( );
-
- if( TX_MODE_1 == g_TxMode )
- {
- for( i = 0; i < 3; i++ )
- {
- led_red_flashing( ); //固定發送模式,紅燈閃爍3次
- drv_delay_ms( 300 );
- }
- }
- else
- {
- for( i = 0; i < 6; i++ )
- {
- led_green_flashing( ); //串口發送模式,綠燈閃爍3次
- drv_delay_ms( 300 );
- }
- }
- }
-
- //發送
- if( TX_MODE_1 == g_TxMode )
- {
- CC1101_Tx_Packet( (uint8_t *)g_Ashining, 8 , ADDRESS_CHECK ); //模式1發送固定字符,1S一包
- drv_delay_ms( 1000 );
- led_red_flashing( );
- //drv_uart_tx_bytes("sending\r\n",9);
- printf("固定發送模式\r\n");
-
- }
- else
- {
- //查詢串口數據
- //drv_uart_tx_bytes("uart...\r\n",9);
- printf("串口發送模式\r\n");
- i = drv_uart_rx_bytes( g_UartRxBuffer );
-
- if( 0 != i )
- {
- CC1101_Tx_Packet( g_UartRxBuffer, i , ADDRESS_CHECK );
- led_red_flashing( );
- }
- }
- }
-
- #else
- //=========================================================================================//
- //*****************************************************************************************//
- //************************************* 接收 **********************************************//
- //*****************************************************************************************//
- //=========================================================================================//
- {
-
- //printf("接收數據模式");
- drv_uart_tx_bytes("receive\r\n",9);
- while( 1 )
- {
- CC1101_Clear_RxBuffer( );
- CC1101_Set_Mode( RX_MODE );
- i = CC1101_Rx_Packet( g_RF24L01RxBuffer ); //接收字節
-
- if( 0 != i )
- {
- led_green_flashing( );
- drv_uart_tx_bytes( g_RF24L01RxBuffer, i ); //輸出接收到的字節
- }
- drv_delay_ms(500);
-
- }
- }
- #endif
-
- }
- #ifdef USE_FULL_ASSERT
- /**
- * @brief Reports the name of the source file and the source line number
- * where the assert_param error has occurred.
- * @param file: pointer to the source file name
- * @param line: assert_param error line source number
- * @retval None
- */
- void assert_failed(uint8_t* file, uint32_t line)
- {
- /* User can add his own implementation to report the file name and line number,
- ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */
- /* Infinite loop */
- while (1)
- {
- }
- }
- #endif
- /**
- * @}
- */
復制代碼
所有資料51hei提供下載:
C1101.rar
(1.71 MB, 下載次數: 90)
2018-5-7 21:53 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
|