Skip to content

通过按键烧录 MCU

Picoxtools上下两侧各有一个用户按键 GPIO 号分别为12,23.本示例通过 C 语言脚本,监听用户按下 Picoxtools的按钮事件来控制 脱机烧录目标 MCU.

  • 标准 C 代码
  • 注册 GPIO 中断ISR 事件
  • 调用 flash 命令
  • 通过lvgl命令在屏幕上显示烧录状态

代码

c
//offline_flash.c

#define BTN_UP_12    12
#define BTN_DOWN_23  23

int curr_key = 0;

int gpio_callback(int num){
    curr_key = get_curr_key();
    return 0;
}

int main(){
    //httpd();
    reg_gpio_hook(gpio_callback);
    lvgl_text("*PUSH BTN TO FLASH*");

    while(1){
        if(curr_key){
            printf("key %d down\r\n",curr_key);
            if(curr_key == 12){
                lvgl_text("TRY FLASH....");

                //flash("rp2040","/upload/rp2040_blink.bin");
                flash("stm32f103","/upload/stm32f103x.bin");
                
                lvgl_text("FINISHED");
            }
            curr_key = 0 ;
        }
        sleep_ms_v(100);
        if (getchar_timeout_us(0) == 3){ // CTRL + C
            unreg_gpio_hook(gpio_callback);
            break;
        }
    }
    return 0;
}

运行方式

  • 在 web控制台的 xShell 内执行上述代码:cc offline_flash.c
  • 复位直接运行:

将上述 c 程序保存于根目录并命名为:init.c

注意

上述程序命名为‘/init.c’ 后,如仍需要通过web console访问 PicoXTools,请将代码中的//httpd();前的注释符删掉!启动 web服务器。