標(biāo)題:
Stm8S CC1101接收及發(fā)送源程序
[打印本頁(yè)]
作者:
skys2000
時(shí)間:
2018-5-7 21:53
標(biāo)題:
Stm8S CC1101接收及發(fā)送源程序
根據(jù)澤耀官方的STM8L101的例程移植的STM8S103 CC1101接收發(fā)送程序引腳有所變化,具體參見(jiàn)CC1101.h 和 SPI.h 的引腳定義
適用于澤耀及億佰特的CC1101 SPI 接口模塊,同理,改改就能適用于24L01模塊
單片機(jī)源程序如下:
#define __CC1101_TX_TEST__ //**@@ 如果測(cè)試發(fā)送功能則需要定義該宏,如果測(cè)試接收則需要屏蔽該宏 **@@//
//#define __USE_SOFT_SPI_INTERFACE__ //**@@ 如果使用軟件SPI則需要定義該宏,反之如果使用硬件SPI則需要屏蔽該宏 **@@//
#include "main.h" //main.h 中含有TX/RX、軟件SPI/硬件SPI選擇配置選項(xiàng)
#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 :主函數(shù)
* @param :無(wú)
* @note :無(wú)
* @retval:無(wú)
*/
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__
//=========================================================================================//
//*****************************************************************************************//
//************************************* 發(fā)送 **********************************************//
//*****************************************************************************************//
//=========================================================================================//
//按鍵初始化
drv_button_init( );
while( 1 )
{
//模式切換
if( BUTOTN_PRESS_DOWN == drv_button_check( ))
{
g_TxMode = 1 - g_TxMode; //模式會(huì)在 TX_MODE_1( 0 ),TX_MODE_2( 1 )之間切換
//狀態(tài)顯示清零
led_green_off( );
led_red_off( );
if( TX_MODE_1 == g_TxMode )
{
for( i = 0; i < 3; i++ )
{
led_red_flashing( ); //固定發(fā)送模式,紅燈閃爍3次
drv_delay_ms( 300 );
}
}
else
{
for( i = 0; i < 6; i++ )
{
led_green_flashing( ); //串口發(fā)送模式,綠燈閃爍3次
drv_delay_ms( 300 );
}
}
}
//發(fā)送
if( TX_MODE_1 == g_TxMode )
{
CC1101_Tx_Packet( (uint8_t *)g_Ashining, 8 , ADDRESS_CHECK ); //模式1發(fā)送固定字符,1S一包
drv_delay_ms( 1000 );
led_red_flashing( );
//drv_uart_tx_bytes("sending\r\n",9);
printf("固定發(fā)送模式\r\n");
}
else
{
//查詢串口數(shù)據(jù)
//drv_uart_tx_bytes("uart...\r\n",9);
printf("串口發(fā)送模式\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("接收數(shù)據(jù)模式");
drv_uart_tx_bytes("receive\r\n",9);
while( 1 )
{
CC1101_Clear_RxBuffer( );
CC1101_Set_Mode( RX_MODE );
i = CC1101_Rx_Packet( g_RF24L01RxBuffer ); //接收字節(jié)
if( 0 != i )
{
led_green_flashing( );
drv_uart_tx_bytes( g_RF24L01RxBuffer, i ); //輸出接收到的字節(jié)
}
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
/**
* @}
*/
復(fù)制代碼
所有資料51hei提供下載:
C1101.rar
(1.71 MB, 下載次數(shù): 90)
2018-5-7 21:53 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
作者:
lqsgg
時(shí)間:
2018-10-16 16:43
謝謝分享!學(xué)習(xí)學(xué)習(xí)!
作者:
bluewater07
時(shí)間:
2019-10-2 21:21
謝謝分享
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1