|
程序已經(jīng)調(diào)通了,可以直接使用
stm32單片機(jī)源程序如下:
- /**********************(C) COPYRIGHT tongxinmao.com*****************************
- * 文件名 : main.c
- * 作者 : 10152203@qq.COM
- * 描述 : 主文件 STM32F103C8T6+RF(SI443 SI4463 SX1278擴(kuò)頻)+OLED+串口+按鍵+溫濕度傳感器
- * 歷史記錄 : 暫無
- * 使用說明 :按鍵S1 短按切換無線是否應(yīng)答,長按清空收發(fā)計(jì)數(shù) S2:單次發(fā)送 S3:連續(xù)發(fā)送50*n次
- 發(fā)送的數(shù)據(jù)為溫濕度數(shù)據(jù),接收方收到后顯示
- ********************************************************************************/
- /*--------------------------- 頭文件包含 --------------------------------------*/
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include "main.h"
- #include "function.h"
- #include "oled.h"
- #include "usart1.h"
- #include "gpio.h"
- #include "Delay.h"
-
- #include "rf.h"
-
- /*-----------------------------------------------------------------------------*/
- /*
- * #pragma diag_suppress 77,550,1294,1295
- * #pragma diag_suppress 870
- */
- #pragma diag_suppress 870
- /*
- * ------------------------------------------------------------------------
- * ------------------------------------------------------------------------
- * -------------------- 宏定義 ------------------------------
- * ------------------------------------------------------------------------
- * ------------------------------------------------------------------------
- */
- #define CMD_TEMP_HUM 1
- #define CMD_ACK 2
- /*
- * ------------------------------------------------------------------------
- * ------------------------------------------------------------------------
- * -------------------- 變量定義 ------------------------------
- * ------------------------------------------------------------------------
- * ------------------------------------------------------------------------
- */
- /*
- * ------------------------------------------------------------------------
- * ------------------------------------------------------------------------
- * -------------------- 函數(shù)聲明 ------------------------------
- * ------------------------------------------------------------------------
- * ------------------------------------------------------------------------
- */
- void frameProcess( u8 *buf, u8 size )
- {
- u8 cmd = buf[0];
- u8 len = buf[1];
- switch ( cmd )
- {
- case CMD_TEMP_HUM:
- if ( rfAck )
- {
- sendBuf[0] = CMD_ACK;
- sendBuf[1] = 0;
- RFSendData( sendBuf, 2 );
- msg( "回復(fù)應(yīng)答..." );
- }
- /* 顯示溫濕度數(shù)據(jù) */
- if ( len == 4 )
- {
- memcpy( &temp, buf + 2, 2 );
- memcpy( &hum, buf + 4, 2 );
- msg( "收到溫濕度數(shù)據(jù)" );
- }
- break;
- case CMD_ACK:
- /* 屏幕顯示應(yīng)答成功 */
- msg( "收到應(yīng)答" );
- break;
- default:
- break;
- }
- }
- /**************************************************************
- * 函數(shù)名 : main()
- * 描述 : 主函數(shù)
- *************************************************************/
- int main( void )
- {
- /* --配置系統(tǒng)主頻為72MHz */
- SystemInit();
- Delay_InitConfig( 72 );
- GPIOInit(); //GPIO初始化
- OLED_Init(); //OLED初始化
- Uart1Init(); //串口初始化用于輸出調(diào)試信息 9600bps 8N1
- RFInit(); //射頻模塊初始化
- RFRxMode(); //進(jìn)入接收模式
- msg( "system start" );
- getTempHum(); //獲取溫濕度數(shù)據(jù)
-
- while ( 1 )
- {
- int len;
- keyProcess(); //按鍵檢測處理
- // led_blink(); //led運(yùn)行燈閃爍
-
- len = RFRevData( revBuf ); //接收無線數(shù)據(jù)
- if ( len > 0 )
- {
- frameProcess( revBuf, len ); //數(shù)據(jù)處理
- }
- if(rfContinueSend())
- {
- Delay_ms( 2000 );
- }
- OledDisplay(); //刷新OLED顯示
- led_blink();
- }
- }
- /*
- * ------------------------------------------------------------------------
- * ------------------------------------------------------------------------
- * -------------------- 公有函數(shù)定義 ------------------------------
- * ------------------------------------------------------------------------
- * ------------------------------------------------------------------------
- */
- /* end of main.c -------------------------------------------------------------*/
復(fù)制代碼
所有資料51hei提供下載:
STM32_SX1278 -smt.rar
(305.18 KB, 下載次數(shù): 152)
2018-4-26 17:35 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|