Files
edc-mcu/main/main.c
T

59 lines
1.7 KiB
C

/**
* @file main.c
* @brief Emm_V5.0 步进闭环电机驱动演示 (ESP-IDF)
*
* 硬件接线:
* ESP32 TX (GPIO6) -> 电机 RX
* ESP32 RX (GPIO7) -> 电机 TX
* ESP32 GND -> 电机 GND
*/
#include "emm_v5.h"
#include "freertos/FreeRTOS.h"
#include "freertos/task.h"
void app_main(void)
{
uint8_t rx_buf[128] = {0};
uint8_t rx_len;
/* 初始化驱动 (UART1, TX=GPIO6, RX=GPIO7, LED=GPIO2) */
Emm_V5_Init(UART_NUM_1, GPIO_NUM_6, GPIO_NUM_7);
/* 上电延时 2 秒, 等待电机闭环初始化完毕 */
ESP_LOGI("MAIN", "等待电机初始化...");
vTaskDelay(pdMS_TO_TICKS(2000));
/* ---- 速度模式演示 ---- */
ESP_LOGI("MAIN", "发送速度控制命令: 地址1, CW, 1000RPM, 加速度10");
Emm_V5_Vel_Control(1, 0, 100, 10, false);
/* 接收电机返回的数据 */
rx_len = Emm_V5_Receive_Data(rx_buf, sizeof(rx_buf));
/* 验证校验字节 (0x6B), 点亮/熄灭 LED */
if (rx_len > 0 && rx_buf[rx_len - 1] == 0x6B) {
gpio_set_level(EMM_V5_LED_GPIO, 1);
ESP_LOGI("MAIN", "通信正常 (校验通过, LED亮)");
} else {
gpio_set_level(EMM_V5_LED_GPIO, 0);
ESP_LOGW("MAIN", "通信异常 (校验失败, LED灭)");
}
/* 打印返回的原始数据 (调试用, 每个字节+1 避免与电机地址冲突) */
ESP_LOGI("MAIN", "返回数据长度: %d", rx_len);
if (rx_len > 0) {
printf("返回数据(+1偏移): ");
for (int i = 0; i < rx_len; i++) {
printf("%02X ", rx_buf[i] + 1);
}
printf("\n");
}
ESP_LOGI("MAIN", "演示完成, 程序挂起");
while (1) {
vTaskDelay(pdMS_TO_TICKS(1000));
}
}