Преглед изворни кода

配置胸牌发生蓝牙数据

xuxinyi пре 1 месец
родитељ
комит
1cf4f484a1
4 измењених фајлова са 47 додато и 10 уклоњено
  1. 15 2
      Core/Inc/E104-BT5005A.h
  2. 1 0
      Core/Inc/ring_buffer.h
  3. 16 6
      Core/Src/E104-BT5005A.c
  4. 15 2
      Core/Src/main.c

+ 15 - 2
Core/Inc/E104-BT5005A.h

@@ -14,7 +14,15 @@
 #include "E104-BT5005A.h"
 
 
-#define E104_BT5005A_ROLE "AT+ROLE=2" //设置为观察值模式
+#define E104_BT5005A_ROLE_1 "AT+ROLE=0" //设置为从机模式
+
+#define E104_BT5005A_ROLE_2 "AT+ROLE=1" //设置为观察值模式
+
+#define E104_BT5005A_ADV "AT+ADV=2" //使能发送广播(非普通模式)
+
+#define E104_BT5005A_NAME "AT+NAME=E100-COMMAND"
+
+#define E104_BT5005A_ADVINTV "AT+ADVINTV=500"
 
 #define E104_BT5005A_SCANINTV "AT+SCANINTV=500" //设置扫描间隔
 
@@ -28,7 +36,12 @@
 
 
 // void E104_BT5005A_SLEEP_Fun(void);
-void E104_BT5005A_ROLE_Fun(void);
+void E104_BT5005A_ROLE1_Fun(void);
+void E104_BT5005A_ROLE2_Fun(void);
+void E104_BT5005A_ADV_Fun(void);
+void E104_BT5005A_ADVINTV_Fun(void);
+void E104_BT5005A_NAME_Fun(void);
+
 void E104_BT5005A_SCANINTV_Fun(void);
 void E104_BT5005A_SCANWND_Fun(void);
 void E104_BT5005A_RESET_Fun(void);

+ 1 - 0
Core/Inc/ring_buffer.h

@@ -32,3 +32,4 @@ int  RingBuffer_Enqueue(RingBuffer *q, uint8_t data);
 int  RingBuffer_Dequeue(RingBuffer *q, uint8_t *data);
 
 #endif //RING_BUFFER_H
+

+ 16 - 6
Core/Src/E104-BT5005A.c

@@ -12,8 +12,13 @@
 #include "string.h"
 #include "E104-BT5005A.h"
 
-void E104_BT5005A_ROLE_Fun(void) {
-    HAL_UART_Transmit(&huart3, (const uint8_t *)E104_BT5005A_ROLE, strlen(E104_BT5005A_ROLE), HAL_MAX_DELAY);
+void E104_BT5005A_ROLE1_Fun(void) {
+    HAL_UART_Transmit(&huart3, (const uint8_t *)E104_BT5005A_ROLE_1, strlen(E104_BT5005A_ROLE_1), HAL_MAX_DELAY);
+
+}
+
+void E104_BT5005A_ROLE2_Fun(void) {
+    HAL_UART_Transmit(&huart3, (const uint8_t *)E104_BT5005A_ROLE_2, strlen(E104_BT5005A_ROLE_2), HAL_MAX_DELAY);
 
 }
 
@@ -39,12 +44,17 @@ void E104_BT5005A_SCANWND_Fun(void) {
     HAL_UART_Transmit(&huart3, (const uint8_t *)E104_BT5005A_SCANWND, strlen(E104_BT5005A_SCANWND), HAL_MAX_DELAY);
 }
 
+void E104_BT5005A_ADV_Fun() {
+    HAL_UART_Transmit(&huart3, (const uint8_t *)E104_BT5005A_ADV, strlen(E104_BT5005A_ADV), HAL_MAX_DELAY);
+}
 
+void E104_BT5005A_NAME_Fun(void) {
+    HAL_UART_Transmit(&huart3, (const uint8_t *)E104_BT5005A_NAME, strlen(E104_BT5005A_NAME), HAL_MAX_DELAY);
+}
 
-
-
-
-
+void E104_BT5005A_ADVINTV_Fun(void) {
+    HAL_UART_Transmit(&huart3, (const uint8_t *)E104_BT5005A_ADVINTV, strlen(E104_BT5005A_ADVINTV), HAL_MAX_DELAY);
+}
 
 
 

+ 15 - 2
Core/Src/main.c

@@ -264,7 +264,6 @@ int main(void)
   powerOn();
   E52_CtlPowerOn_Fun();
 
-
   // 启动 USART2 DMA 接收
   HAL_UART_Receive_DMA(&huart3, rx_buf, sizeof(rx_buf));
   __HAL_UART_ENABLE_IT(&huart3, UART_IT_IDLE);
@@ -272,11 +271,25 @@ int main(void)
   __HAL_UART_ENABLE_IT(&huart2, UART_IT_IDLE);
   Flash_Read_LoraAddr(&deviceInfo.loraDeviceAddress_H, &deviceInfo.loraDeviceAddress_L);
   printf("deviceInfo.loraDeviceAddress_H:%02X,deviceInfo.loraDeviceAddress_L:%02X\r\n", deviceInfo.loraDeviceAddress_H, deviceInfo.loraDeviceAddress_L);
+  E104_BT5005A_ROLE1_Fun();
+  HAL_Delay(2000);
+  E104_BT5005A_NAME_Fun();
+  HAL_Delay(4000);
+  E104_BT5005A_ADVINTV_Fun();
+  HAL_Delay(4000);
+  E104_BT5005A_ADV_Fun();
+  HAL_Delay(4000);
+
+
+
+  while (TRUE) {
+    HAL_Delay(1000);
+  }
   if (deviceInfo.loraDeviceAddress_H == 0xFF || deviceInfo.loraDeviceAddress_L == 0xFF || deviceInfo.loraDeviceAddress_H == 0x00 || deviceInfo.loraDeviceAddress_L == 0x00) { // 未设置Lora地址,应该是初次启动,配置Lora地址蓝牙等
     HAL_Delay(4000);
     printf("开始初始化\r\n");
     printf("切换为观察者模式\r\n");
-    E104_BT5005A_ROLE_Fun();
+    E104_BT5005A_ROLE1_Fun();
     HAL_Delay(2000);
     printf("初始化扫描间隔\r\n");
     E104_BT5005A_SCANINTV_Fun();