1、 完成硬件電路的設計,其中包括單片機和CC1101模塊的設計;
2、完成無線通信模塊的程序設計與實現;
部分關鍵代碼:
#include "main.h" //main.h 中含有TX/RX選擇配置選項
const char *g_Ashining = "433Mtest";
uint8_t g_TxMode = 0, g_UartRxFlag = 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();
//LED初始化
drv_led_init();
//SPI初始化
drv_spi_init();
//CC1101初始化
CC1101_Init();
for (i = 0; i < 6; 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 < 6; i++)
{
led_red_flashing(); //固定發送模式,紅燈閃爍3次
drv_delay_ms(500);
}
}
else
{
for (i = 0; i < 6; i++)
{
led_green_flashing(); //串口發送模式,綠燈閃爍3次
drv_delay_ms(500);
}
}
}
//模式切換
//發送
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();
}
else
{
//查詢串口數據
i = drv_uart_rx_bytes(g_UartRxBuffer);
if (0 != i)
{
CC1101_Tx_Packet(g_UartRxBuffer, i, ADDRESS_CHECK);
led_red_flashing();
}
}
}
#else
接收
while (1)
{
CC1101_Clear_RxBuffer();
CC1101_Set_Mode(RX_MODE);
while (0 != CC1101_GET_GDO0_STATUS());
while (0 == CC1101_GET_GDO0_STATUS());
i = CC1101_Rx_Packet(g_RF24L01RxBuffer); //接收字節
if (0 != i)
{
led_green_flashing();
drv_uart_tx_bytes(g_RF24L01RxBuffer, i); //輸出接收到的字節
}
}
#endif
}
|