【求助】安信可Rd-03E 点灯

[复制链接]
查看696 | 回复14 | 2024-3-28 08:34:16 | 显示全部楼层 |阅读模式
电脑也出问题了,原因未知串口数据异常,大部分的窗口工具都是乱码。

llcom 可以正常使用,奇怪了

有无大佬 指点下。




参考其他的大佬 的代码
  1. #include "bflb_mtimer.h"
  2. #include "board.h"
  3. #include "bflb_uart.h"
  4. #include "bflb_gpio.h"
  5. #include "FreeRTOS.h"
  6. #include "task.h"
  7. #include "math.h"

  8. #define DBG_TAG "MAIN"
  9. #include "log.h"

  10. // gpio 用来点亮led 初始化uart
  11. struct bflb_device_s *gpio;
  12. // uart串口读取 rd03e
  13. struct bflb_device_s *rd03e;
  14. // 缓存数据总数,默认Rd03E 数据,是7位舍去开头两个 AA AA
  15. int BUFFER_LEN = 5;
  16. // 换出数据缓存数组
  17. uint8_t UART_RECEIVE_BUFFER[5];

  18. void _rd03eTask(void* pvParameters){
  19.     // 当前数组下标
  20.     int index = 0;
  21.     // 读取数据状态标记
  22.     int flag = 0;
  23.     // 是否读取到数据末尾
  24.     int end = 0;
  25.     // led 灯状态
  26.     int led_state = 0;
  27.     while (1)
  28.     {
  29.         // 通过 uart 异步接收一个字符
  30.          int ch = bflb_uart_getchar(rd03e);
  31.          // 防止 数据读取完成不需要再读取,同时防止index越界
  32.          if(ch!=-1 && index < BUFFER_LEN){
  33.             if(flag == 2){
  34.               // 缓存数据
  35.               UART_RECEIVE_BUFFER[index++] = ch;
  36.               switch (end) {
  37.                 case 0:
  38.                   // 检测第一个 55
  39.                   if(ch == 0x55){
  40.                       end = 1;
  41.                     }else{
  42.                       end = 0;
  43.                     }
  44.                   break;
  45.                 case 1:
  46.                   // 检测第二个 55  结束
  47.                   if(ch == 0x55){
  48.                       end = 2;
  49.                     }else{
  50.                       end = 0;
  51.                     }
  52.                   break;
  53.                 default:
  54.                   break;
  55.               }
  56.             }else{
  57.               switch (flag){
  58.                 case 0:
  59.                   // 读取到第一个 AA 改变标记 1 读取第二个 AA 确定数据头
  60.                   if(ch == 0xAA){
  61.                     flag = 1;
  62.                   }else{
  63.                     flag = 0;
  64.                   }
  65.                   break;
  66.                 case 1:
  67.                   // 读取到第二个 AA 改变标记 2 准备读取数据
  68.                   if(ch == 0xAA){
  69.                     flag = 2;
  70.                     memset(UART_RECEIVE_BUFFER,0 , sizeof(UART_RECEIVE_BUFFER));
  71.                     index = 0;
  72.                   }else{
  73.                     flag = 0;
  74.                   }
  75.                   break;
  76.                 default:
  77.                   break;
  78.               }
  79.             }
  80.           }

  81.         // 读取到结束标记 处理数据
  82.         if(end == 2){
  83.           // 打印看下读取的数据
  84.           for (size_t i = 0; i < sizeof(UART_RECEIVE_BUFFER); i++) {
  85.               printf("0x%02x ", UART_RECEIVE_BUFFER[i]);
  86.           }

  87.           // 查看目标状态
  88.           if(UART_RECEIVE_BUFFER[0] == 0x00){
  89.             printf("无目标\\r\\n");
  90.           }else if(UART_RECEIVE_BUFFER[0] == 0x01){
  91.             printf("运动目标\\r\\n");
  92.           }else if(UART_RECEIVE_BUFFER[0] == 0x02){
  93.             printf("微动目标\\r\\n");
  94.           }

  95.           // 有目标检查距离亮灯灭灯操作
  96.           if(UART_RECEIVE_BUFFER[0] == 0x01 || UART_RECEIVE_BUFFER[0] == 0x02){
  97.             printf("有目标\\r\\n");
  98.             uint16_t distance = (UART_RECEIVE_BUFFER[2] << 8) | UART_RECEIVE_BUFFER[1];
  99.             printf("距离 :%d\\r\\n", distance);


  100.             // 距离在50-70cm之间亮灯
  101.             if(distance > 30 && distance < 50){
  102.               // 防止灯亮着还执行亮灯
  103.               if(led_state == 0){
  104.                 led_state = 1;
  105.                 // 亮灯
  106.                 bflb_gpio_set(gpio, GPIO_PIN_14);
  107.               }
  108.             }else{
  109.               if(led_state == 1){
  110.                 led_state = 0;
  111.                 // 灭灯
  112.                 bflb_gpio_reset(gpio, GPIO_PIN_14);
  113.               }
  114.             }
  115.           }
  116.           // 处理完数据 恢复状态
  117.           end = 0;
  118.           flag = 0;
  119.           index = 0;
  120.         }
  121.        vTaskDelay(1);
  122.     }
  123.    
  124. }

  125. int main(void)
  126. {
  127.     board_init();
  128.     // 初始化gpio
  129.     gpio = bflb_device_get_by_name("gpio");

  130.     // 初始化led针脚gpio
  131.     bflb_gpio_init(gpio, GPIO_PIN_14, GPIO_OUTPUT | GPIO_PULLUP | GPIO_SMT_EN | GPIO_DRV_0);
  132.     bflb_gpio_reset(gpio, GPIO_PIN_14);

  133.     // 初始化uart
  134.     rd03e = bflb_device_get_by_name("uart1");
  135.     // 初始化uart gpio
  136.     bflb_gpio_uart_init(gpio, GPIO_PIN_23, GPIO_UART_FUNC_UART1_TX);
  137.     bflb_gpio_uart_init(gpio, GPIO_PIN_24, GPIO_UART_FUNC_UART1_RX);

  138.     // 初始化uart配置参数
  139.     struct bflb_uart_config_s conf = {
  140.         .baudrate = 256000,
  141.         .data_bits = UART_DATA_BITS_8,
  142.         .stop_bits = UART_STOP_BITS_1,
  143.         .parity = UART_PARITY_NONE,
  144.         .flow_ctrl = UART_FLOWCTRL_NONE,
  145.         .rx_fifo_threshold = 7,
  146.         .tx_fifo_threshold = 7
  147.     };

  148.     bflb_uart_init(rd03e, &conf);

  149.     // 创建任务接收数据
  150.     xTaskCreate(_rd03eTask, (char*)"rd03e", 1024, NULL, 1, NULL);
  151.     vTaskStartScheduler();

  152.     while (1) {
  153.      
  154.     }
  155. }
复制代码
回复

使用道具 举报

lazy | 2024-3-28 08:42:30 | 显示全部楼层
波特率看下对不对
回复 支持 反对

使用道具 举报

WT_0213 | 2024-3-28 09:06:10 | 显示全部楼层
可以把错误信息截图发一发。还能分析一下问题原因。
回复 支持 反对

使用道具 举报

爱笑 | 2024-3-28 09:12:50 | 显示全部楼层
泽哥也表示疑惑中,是不是你的电脑问题。
用心做好保姆工作
回复 支持 反对

使用道具 举报

bzhou830 | 2024-3-28 09:54:33 | 显示全部楼层
硬件接线也发出来看看
选择去发光,而不是被照亮
回复 支持 反对

使用道具 举报

1055173307 | 2024-3-28 14:33:01 | 显示全部楼层
接线跟软件设置看看,雷达有没有刷过固件
回复 支持 反对

使用道具 举报

沈夜 | 2024-3-28 18:17:58 | 显示全部楼层
3333.jpg

显示就这样的。
回复 支持 反对

使用道具 举报

WT_0213 | 2024-3-29 08:39:37 | 显示全部楼层
沈夜 发表于 2024-3-28 18:17
显示就这样的。

你接收数据的板子是哪个呀,貌似是中文导致的。
回复 支持 反对

使用道具 举报

lazy | 2024-3-29 09:12:27 | 显示全部楼层
大概率中文问题
回复 支持 反对

使用道具 举报

noonezero | 2024-4-8 09:55:13 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则