2 Commits

Author SHA1 Message Date
699a8218f7 添加485获取特定命令的代码 2024-11-29 18:21:23 +08:00
70e3e162ae 添加RS485支持 2024-11-28 17:23:59 +08:00
6 changed files with 54 additions and 6 deletions

View File

@@ -29,6 +29,7 @@ set(TARGET_C_SRC
${CMAKE_SOURCE_DIR}/src/systick.c
${CMAKE_SOURCE_DIR}/src/ultrasonic_driver.c
${CMAKE_SOURCE_DIR}/src/mlx90614.c
${CMAKE_SOURCE_DIR}/src/RS485.c
)
add_executable(xlsw_3dp_ultrasonic_300K ${TARGET_C_SRC})

11
inc/RS485.h Normal file
View File

@@ -0,0 +1,11 @@
//
// Created by dell on 24-11-29.
//
#ifndef RS485_H
#define RS485_H
#include <stdbool.h>
#include <string.h>
#endif //RS485_H

View File

@@ -34,12 +34,14 @@
#define USART_RCU RCU_USART0
#define USART_GPIO_RCU RCU_GPIOA
#define USARET_GPIO_PORT GPIOA
#define USART_GPIO_PORT GPIOA
#define USART_TX_PIN GPIO_PIN_2
#define USART_RX_PIN GPIO_PIN_3
#define USART0_PHY USART0
#define USART_BAUDRATE 115200U
#define USART_EN_PIN GPIO_PIN_4
#define US_TRAN_GPIO_RCU RCU_GPIOB
#define US_TRAN_GPIO_PORT GPIOB
#define US_TRAN_PIN GPIO_PIN_1

View File

@@ -1,7 +1,7 @@
# 连接cmsis-dap喝粥
; interface cmsis-dap
source [find interface/cmsis-dap.cfg]
; source [find interface/jlink.cfg]
# 选择SWD
transport select swd

29
src/RS485.c Normal file
View File

@@ -0,0 +1,29 @@
//
// Created by dell on 24-11-29.
//
#include "RS485.h"
#include "gd32e23x.h"
#include "systick.h"
#include <stdio.h>
#include <stdlib.h>
#define MAX_CMD_SIZE 16
#define BUFSIZE 8
static char cmdbuffer[BUFSIZE][MAX_CMD_SIZE];
static char *strchr_pointer = NULL;
static int bufindr = 0;
static int bufindw = 0;
static int buflen = 0;
bool code_seen(char code)
{
strchr_pointer = strchr(cmdbuffer[bufindr], code);
return (strchr_pointer != NULL); //Return True if a character was found
}
float code_value(void)
{
return (strtod(&cmdbuffer[bufindr][strchr_pointer - cmdbuffer[bufindr] + 1], NULL));
}

View File

@@ -39,11 +39,16 @@ void usart_config(void)
rcu_periph_clock_enable(USART_GPIO_RCU);
rcu_periph_clock_enable(USART_RCU);
gpio_af_set(USARET_GPIO_PORT, GPIO_AF_1, GPIO_PIN_2 | GPIO_PIN_3);
gpio_af_set(USART_GPIO_PORT, GPIO_AF_1, GPIO_PIN_2 | GPIO_PIN_3);
/* configure USART Tx as alternate function push-pull */
gpio_mode_set(USARET_GPIO_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP, USART_TX_PIN | USART_RX_PIN);
gpio_output_options_set(USARET_GPIO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, USART_TX_PIN | USART_RX_PIN);
/* configure USART Tx&Rx as alternate function push-pull */
gpio_mode_set(USART_GPIO_PORT, GPIO_MODE_AF, GPIO_PUPD_PULLUP, USART_TX_PIN | USART_RX_PIN);
gpio_output_options_set(USART_GPIO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_10MHZ, USART_TX_PIN | USART_RX_PIN);
/* configure RS485 EN Pin */
gpio_mode_set(USART_GPIO_PORT, GPIO_MODE_OUTPUT, GPIO_PUPD_NONE, USART_EN_PIN);
gpio_output_options_set(USART_GPIO_PORT, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, USART_EN_PIN);
gpio_bit_write(USART_GPIO_PORT, USART_EN_PIN, SET);
/* USART configure */
usart_deinit(USART0_PHY);