Contact me: hankecnc@gmail.com

闪烁灯 PC13 #14

推推 grbl 3年前 (2023-02-08) 343次浏览
关闭
Juank23 打开了这个问题 2021 年 5 月 29 日 · 5 条评论
关闭

闪烁灯 PC13#14

Juank23 打开了这个问题 2021 年 5 月 29 日 · 5 条评论

评论

闪烁灯 PC13 #14

我想知道如何添加 led PC13,以便当它与程序连接时,它会像 rx 和 tx 一样闪烁,它仍然处于等待状态,谢谢

闪烁灯 PC13 #14
贡献者

在有流量时闪烁可以通过添加一个插件来实现,该插件将输入重定向到自身并在有活动时使 LED 闪烁。无法检测 UART 流量的连接/断开事件,如果通过 USB 串口,则可能以某种方式连接到 ST USB 驱动程序。但我不知道这是否可能或如何去做 – 你必须阅读文档或研究 USB cod 才能找到答案。

YModem 协议是一个如何监听输入的例子,它通过重定向来做到这一点,grbl.on_unknown_realtime_cmd但是你会想通过重定向来做同样的事情,hal.stream.enqueue_realtime_command而不是因为所有输入都通过它, grbl.on_unknown_realtime_cmd只有在收到未知的实时命令字符时才会被调用。

如果您想以预定义的时间间隔闪烁 LED,则重定向到您的代码并通过调用hal.get_elapsed_ticks()grbl.on_execute_realtime来跟踪时间。当有交通时设置一个标志以知道何时闪烁。抽动每毫秒增加一次。同样,YModem 协议代码可以作为如何执行此操作的示例。

如果通过将插件添加到my_plugin.c文件中来实现,则无需修改控制器中的一行代码即可添加插件。

闪烁灯 PC13 #14
作者

早上好,谢谢你的回答,如果我想知道如何让控制器的 ledPC13 闪烁,我是这方面的新手,非常感谢

闪烁灯 PC13 #14
作者

闪烁灯 PC13 #14
下午好,就是这样,你能帮我举个例子吗……非常感谢

闪烁灯 PC13 #14
贡献者

下面是我如何让 grblHAL 中的 LED 闪烁:

#include "driver.h"

static on_report_options_ptr on_report_options;
static on_execute_realtime_ptr on_execute_realtime;

// Add info about our plugin to the $I report.
static void on_report_my_options (bool newopt)
{
    on_report_options(newopt);

    if(!newopt)
        hal.stream.write("[PLUGIN:Blink LED v1.00]" ASCII_EOL);
}

static void blink_led (sys_state_t state)
{
    static bool led_on = false;
    static uint32_t ms = 0;

    if(hal.get_elapsed_ticks() >= ms) {
        ms = hal.get_elapsed_ticks() + 500; //ms
        led_on = !led_on;
        if(led_on)
            GPIOC->ODR |= GPIO_PIN_13;
        else
            GPIOC->ODR &= ~GPIO_PIN_13;
    }

    on_execute_realtime(state);
}

void my_plugin_init (void)
{
    // Add info about our plugin to the $I report.
    on_report_options = grbl.on_report_options;
    grbl.on_report_options = on_report_my_options;

    // Add blink LED function to grblHAL foreground process
    on_execute_realtime = grbl.on_execute_realtime;
    grbl.on_execute_realtime = blink_led;

    // Enable PC13 as output
    GPIO_InitTypeDef GPIO_InitStructure = {
        .Mode      = GPIO_MODE_OUTPUT_PP,
        .Speed     = GPIO_SPEED_FREQ_VERY_HIGH,
        .Pin       = GPIO_PIN_13,
    };
    HAL_GPIO_Init(GPIOC, &GPIO_InitStructure);
}

创建Src/my_plugin.c,复制此代码并重新编译/闪烁,LED 每秒闪烁一次。

闪烁灯 PC13 #14
作者

非常感谢你的朋友,出色的工作