b49c9ab0c6
完整实现了以下模块: - 系统数据总线(sys_data_bus)模块间通信 - UART/USART/LPUART驱动 + RS485半双工 - I2C驱动(AS5600角度传感器 + AT24C02 EEPROM) - Modbus RTU从站协议 - 步进电机微步进控制(正弦/余弦换相+S曲线加减速) - 到位开关驱动(DI_MIN/DI_MAX) - PGA+ADC电流检测 - 系统监控任务(内存/串口/传感器/任务状态) - LED/Key外设驱动 - 基于CMake + arm-none-eabi-gcc构建系统
43 lines
1.2 KiB
Bash
43 lines
1.2 KiB
Bash
#!/bin/bash
|
|
|
|
PROJECT_DIR="$(cd "$(dirname "$0")/.." && pwd)"
|
|
BUILD_DIR="${PROJECT_DIR}/build"
|
|
ELF_FILE="${BUILD_DIR}/StepMotorCtrl.elf"
|
|
|
|
if [ ! -f "${ELF_FILE}" ]; then
|
|
echo "Error: ${ELF_FILE} not found. Please build the project first."
|
|
echo "Run: cd build && cmake .. && make"
|
|
exit 1
|
|
fi
|
|
|
|
OPENOCD_SCRIPTS="${HOME}/openocd/scripts"
|
|
OPENOCD_INTERFACE="interface/stlink.cfg"
|
|
OPENOCD_TARGET="target/py32md5xx.cfg"
|
|
|
|
if [ -f "/usr/local/share/openocd/scripts/${OPENOCD_TARGET}" ]; then
|
|
OPENOCD_SCRIPTS="/usr/local/share/openocd/scripts"
|
|
fi
|
|
|
|
if command -v openocd &> /dev/null; then
|
|
echo "Flashing ${ELF_FILE} with OpenOCD..."
|
|
openocd -s "${OPENOCD_SCRIPTS}" \
|
|
-f "${OPENOCD_INTERFACE}" \
|
|
-f "${OPENOCD_TARGET}" \
|
|
-c "program ${ELF_FILE} verify reset exit"
|
|
elif command -v st-flash &> /dev/null; then
|
|
echo "Flashing with st-flash..."
|
|
BIN_FILE="${BUILD_DIR}/StepMotorCtrl.bin"
|
|
if [ -f "${BIN_FILE}" ]; then
|
|
st-flash write ${BIN_FILE} 0x08000000
|
|
else
|
|
echo "Error: ${BIN_FILE} not found."
|
|
exit 1
|
|
fi
|
|
else
|
|
echo "Error: Neither OpenOCD nor st-flash found."
|
|
echo "Please install tools or use ST-Link Utility to flash."
|
|
exit 1
|
|
fi
|
|
|
|
echo "Flash complete."
|