通过按键烧录 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服务器。