通过按键烧录MCU的实现方案
Picoxtools的上下两侧各配备一个用户按键,对应的对应的GPIO分别为GPIO12和GPIO23。本示例通过C语言程序监听这些按键的触发事件,实现对目标MCU的脱机烧录控制。
具体实现方式:
- 采用标准C代码编写核心逻辑
- 注册GPIO中断服务程序(ISR)以响应按键事件
- 在中断处理中调用烧录(flash)命令执行烧录操作
- 借助LVGL库在屏幕上实时显示烧录进度与状态信息
代码
c
//gpio_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 gpio_flash.c - 复位直接运行:
将上述 c 程序保存于根目录并命名为:
init.c
注意
上述程序命名为‘/init.c’ 后,如仍需要通过web console访问 PicoXTools,请将代码中的//httpd();前的注释符删掉!启动 web服务器。