|
|
@@ -55,6 +55,7 @@ uint8_t rx_buf[100] = {0};
|
|
|
uint8_t totalData[30][100] = {0};
|
|
|
uint8_t uart2_rx_byte[10] = {0};
|
|
|
uint8_t workMode = 0; // 0: 接收蓝牙数据 1: 使用lora发生数据 2:等待间隔时间
|
|
|
+uint8_t receiveBlDataCount = 0;
|
|
|
/* USER CODE END PV */
|
|
|
|
|
|
/* Private function prototypes -----------------------------------------------*/
|
|
|
@@ -99,7 +100,7 @@ void sentLoraData(uint8_t sendDataNum) {
|
|
|
}
|
|
|
|
|
|
uint8_t randomFun() {
|
|
|
- return rand() % 120 + 60; //随机时间1分钟到3分钟之间随机数
|
|
|
+ return rand() % 20 + 20; //随机时间1分钟到3分钟之间随机数
|
|
|
}
|
|
|
/* USER CODE END 0 */
|
|
|
|
|
|
@@ -150,10 +151,9 @@ int main(void)
|
|
|
const char *lora_msg = "AT+OPTION=3,0";
|
|
|
HAL_UART_Transmit(&huart2, (uint8_t *)lora_msg, strlen(lora_msg), HAL_MAX_DELAY);
|
|
|
|
|
|
- int i = 0;
|
|
|
- uint32_t timer = 0;
|
|
|
+ uint8_t count = 0;
|
|
|
+ uint8_t randomTime = 0;
|
|
|
srand(HAL_GetTick());
|
|
|
- // uint8_t i = 0xaa;
|
|
|
/* USER CODE END 2 */
|
|
|
|
|
|
/* Infinite loop */
|
|
|
@@ -163,34 +163,44 @@ int main(void)
|
|
|
{
|
|
|
/* USER CODE END WHILE */
|
|
|
if (workMode == 0) { // 接收蓝牙数据
|
|
|
- printf("接收中\r\n");
|
|
|
+ printf("接收中第%d秒,接受了%d位数据\r\n", count, receiveBlDataCount);
|
|
|
+ if (count > 4) { //搜10秒数据
|
|
|
+ E104_BT5005A_SLEEP_Fun();
|
|
|
+ HAL_Delay(5);//等待蓝牙模块进入睡眠模式
|
|
|
+ // receiveBlDataCount = 0;
|
|
|
+ workMode = 1;
|
|
|
+ count = 0;
|
|
|
+ }else {
|
|
|
+ count++;
|
|
|
+ }
|
|
|
}else if (workMode == 1) { // 发送数据给Lora
|
|
|
- printf("发送中\r\n");
|
|
|
- if (i < 10)
|
|
|
+
|
|
|
+ printf("发送第%d个数据,总数据大小为%d\r\n", count,receiveBlDataCount);
|
|
|
+ if (count < receiveBlDataCount)
|
|
|
{
|
|
|
// 启动 USART2 DMA 接收
|
|
|
- sentLoraData(i);
|
|
|
- i++;
|
|
|
+ sentLoraData(count);
|
|
|
+ count++;
|
|
|
}else {
|
|
|
+ receiveBlDataCount = 0;
|
|
|
workMode = 2;
|
|
|
- i = 0;
|
|
|
+ count = 0;
|
|
|
}
|
|
|
}else if (workMode == 2) {
|
|
|
- // 等待间隔时间
|
|
|
printf("等待中\r\n");
|
|
|
- if (timer > randomFun()) {
|
|
|
+ printf("等待时间%d秒\r\n",randomTime);
|
|
|
+ if (randomTime == 0) {
|
|
|
+ randomTime = randomFun();
|
|
|
+ }
|
|
|
+ if (count > randomFun()) {
|
|
|
E104_BT5005A_WAKE_UP_Fun();
|
|
|
+ randomTime = 0;
|
|
|
workMode = 0;
|
|
|
- timer = 0;
|
|
|
+ count = 0;
|
|
|
}else {
|
|
|
- timer++;
|
|
|
+ count++;
|
|
|
}
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
- // 使用系统滴答计数作为种子 (不太随机,但简单)
|
|
|
- // E104_BT5005A_SLEEP_Fun();
|
|
|
- // printf("%d\r\n", randomFun());
|
|
|
HAL_Delay(1000);
|
|
|
/* USER CODE BEGIN 3 */
|
|
|
}
|