400 128 6709

行业新闻

星闪开发之buttondemo烧录后无效果思路

发布时间:2025-07-24点击次数:

前言(若无空闲时间请直接跳转至文末查看结论)

此前我撰写了几篇有关星闪技术的入门文章,最近收到几位读者私信反馈——烧录buttondemo后毫无反应。本文旨在解决这一常见问题(本文适合新手阅读,若赶时间可直接滑至最后看解决方案)。

相关基础教程请参考:星闪开发入门级教程之安装编译器与小项目烧录

星闪开发之buttondemo烧录后无效果思路### 一、常规排查思路

在过往从事前后端开发及自然语言处理项目时,遇到异常通常会从以下四个方面入手:

  • 代码逻辑是否存在漏洞
  • 配置项是否正确
  • 查阅官方API文档
  • 研读第三方库或系统源码(如Android平台)

二、配置流程说明

将Demo代码放入peripheral目录下之后,需完成以下两步配置:

1. 修改 peripheral 目录下的 Kconfig 文件,新增如下内容:

config SAMPLE_SUPPORT_BUTTONDEMO    bool    prompt "Support BUTTONDEMO Sample."    default n    depends on ENABLE_PERIPHERAL_SAMPLE    help        This option means support BUTTONDEMO Sample.

2. 在 peripheral 目录下的 CMakeLists.txt 文件中添加如下语句:

if(DEFINED CONFIG_SAMPLE_SUPPORT_BUTTONDEMO)    add_subdirectory_if_exist(buttondemo)endif()

三、代码简要分析

1. 头文件引入与宏定义部分

#include "pinctrl.h"#include "common_def.h"#include "soc_osal.h"#include "gpio.h"#include "hal_gpio.h"#include "watchdog.h"#include "app_init.h"#define BSP_LED 7      // RED#define BUTTON_GPIO 12 // 按键#define BUTTON_TASK_STACK_SIZE 0x1000#define BUTTON_TASK_PRIO 17

头文件说明:涵盖了引脚控制、通用常量、操作系统抽象层、GPIO驱动、看门狗模块和应用初始化等核心组件。

宏定义解释:设定了LED灯和按键对应的GPIO编号,以及任务堆栈大小与优先级。

2. 全局变量声明

static int g_ledState = 0;

作用:用于记录LED当前状态(亮或灭)。

3. 按键中断回调函数

static void gpio_callback_func(pin_t pin, uintptr_t param){    UNUSED(pin);    UNUSED(param);    g_ledState = !g_ledState;    printf("Button pressed.\r\n");}

功能描述:按键触发时执行此函数,翻转LED状态并打印日志。

4. 主任务函数实现

static void *button_task(const char *arg){    unused(arg);    uapi_pin_set_mode(BSP_LED, HAL_PIO_FUNC_GPIO);    uapi_gpio_set_dir(BSP_LED, GPIO_DIRECTION_OUTPUT);    uapi_gpio_set_val(BSP_LED, GPIO_LEVEL_LOW);    uapi_pin_set_mode(BUTTON_GPIO, HAL_PIO_FUNC_GPIO);    gpio_select_core(BUTTON_GPIO, CORES_APPS_CORE);    uapi_gpio_set_dir(BUTTON_GPIO, GPIO_DIRECTION_INPUT);    errcode_t ret = uapi_gpio_register_isr_func(BUTTON_GPIO, GPIO_INTERRUPT_FALLING_EDGE, gpio_callback_func);    if (ret != 0) {        uapi_gpio_unregister_isr_func(BUTTON_GPIO);    }    while (1) {        uapi_watchdog_kick();        if (g_ledState) {            uapi_gpio_set_val(BSP_LED, GPIO_LEVEL_HIGH);        } else {            uapi_gpio_set_val(BSP_LED, GPIO_LEVEL_LOW);        }    }    return NULL;}

初始化阶段:

Reachout.ai Reachout.ai

一个AI驱动的视频开发平台,专为忙碌的企业家和销售团队打造

Reachout.ai 142 查看详情 Reachout.ai
  • 设置LED为输出模式,默认关闭;
  • 设置按键为输入模式,并指定由应用核心处理中断;
  • 注册中断回调函数,采用下降沿触发方式。

主循环逻辑:

  • 定期喂狗防止系统复位;
  • 根据全局变量 g_ledState 控制LED亮灭状态。

5. 创建任务线程函数

static void button_entry(void){    uint32_t ret;    osal_task *taskid;    osal_kthread_lock();    taskid = osal_kthread_create((osal_kthread_handler)button_task, NULL, "led_task", BUTTON_TASK_STACK_SIZE);    ret = osal_kthread_set_priority(taskid, BUTTON_TASK_PRIO);    if (ret != OSAL_SUCCESS) {        printf("create task1 failed .\n");    }    osal_kthread_unlock();}

流程说明:

  • 锁定内核以确保线程安全;
  • 创建名为“led_task”的线程;
  • 设置优先级;
  • 解锁后允许调度执行。

6. 应用程序入口点

app_run(button_entry);

启动整个程序,调用button_entry函数创建按键监听任务。

7. 整体运行流程总结

  • 系统通过app_run启动;
  • button_entry创建任务线程;
  • 线程中完成硬件初始化与中断注册;
  • 按键按下时触发中断回调,改变LED状态;
  • 主循环持续更新LED输出并喂狗保活。

由于用户反馈代码来自官方仓库,基本排除逻辑错误可能,因此下一步应聚焦于硬件资料核对。

四、最终解决方案

查阅官方硬件手册发现:

星闪开发之buttondemo烧录后无效果思路
原代码中设置的按键GPIO编号为12,但实际开发板按键连接的是GPIO 14!

修改宏定义如下:

#define BUTTON_GPIO 14 // 按键

重新编译并烧录即可正常运行!

总结

该示例实现了经典的按键控制LED功能,结合看门狗机制提升系统稳定性,是嵌入式GPIO编程中的典型应用案例。遇到类似问题时,建议优先确认硬件引脚定义是否匹配开发板实际布局。

以上就是星闪开发之buttondemo烧录后无效果思路的详细内容,更多请关注其它相关文章!


# 操作系统  # 沙田镇网站建设  # 长宁区网络营销推广软件  # 网站内部优化训练方法  # 潍坊网站建设工作推荐会  # 咖啡口碑营销推广文案  # 长沙正规SEO优化报价  # 徐汇网络营销推广  # 知乎问题关键词排名  # 目录下  # 高性能  # 救了  # 好用  # 南京  # 全局变量  # 微星  # 回调  # 烧录  # red  # ai  # 星闪  # 桂林独特seo方法  # 威海网站优化平台 


相关栏目: 【 行业新闻62819 】 【 科技资讯67470


相关推荐: 今年,全球客服中心支出将增长 16.2%,迎接对话式 AI 的浪潮,根据 Gartner 报告  为了避免人工智能可能带来的灾难,我们要向核安全学习  阿里达摩院向公众免费开放100项AI专利许可  无人机巡检方案是什么,该如何选择适合的巡检方案  管提需求,大模型解决问题:图表处理神器SheetCopilot上线  麦肯锡:到 2045 年左右,将有 50% 工作被 AI 接管  马斯克回应“人工智能让一切变得更好”:我们已经是半机器人了  昇腾AI大模型训推一体化解决方案将在WAIC发布  「模仿学习」只会套话?解释微调+130亿参数Orca:推理能力打平ChatGPT  【|直播|预告】人工智能高峰论坛将于7月2日13:30准时开播!  兆讯传媒率先全面拥抱AI 数智广告内容焕发新生机  杭州举办第19届亚运会,主题为「亚运元宇宙」的发布仪式举行  赋能选题探索:AI助手在经济学专业中的应用指南  丰田汽车研究院推出生成式人工智能汽车设计工具  谷歌 Gmail“帮我写电子邮件”AI 功能开始向安卓和苹果设备推广  聚焦WAIC|AI技术支撑大模型探索未来  苹果式 AI 哲学:不着一字,处处落子  基于信息论的校准技术,CML让多模态机器学习更可靠  成都大运会闭幕式引入人形机器人展示表演  生成式AI爆发,亚马逊云科技持续专注创新,助力企业数字化转型  6月14日《星空下的对话》 张朝阳陆川将畅聊人生、电影、心理学与AI  美图设计室2.0新增哪些功能  Transformer六周年:当年连NeurIPS Oral都没拿到,8位作者已创办数家AI独角兽  央视报道!星纪魅族集团车载人机交互技术成世界移动通信大会焦点  AI行业盛会大咖云集!Sam Altam、“AI教父”......一文看懂最新观点  首届亚太网络法实务大会召开 九位大咖探讨元宇宙与人工智能发展  2025年贵州省青少年机器人竞赛在安举行  抢占新赛道 加快机器人产业集聚发展  世界人工智能大会上,科大讯飞宣布与华为联手  羊驼家族大模型集体进化!32k上下文追平GPT-4,田渊栋团队出品  “技术+实践+生态”三箭齐发,京东方抢占物联网高地  AI+音乐如何“生成”动听旋律?一起揭秘世界人工智能大会开场曲  谷歌推出新 AI 工具 Imagen Editor,一句话对图片二次创作  美版贴吧8000小组自爆停摆!拒绝数据被谷歌OpenAI白嫖,CEO被网友骂翻:背刺第三方应用  AI大模型时代,数据存储新基座助推教科研数智化跃迁  揭示经济学论文写作中提高效率与质量的AI助手应用策略  视觉中国推出AI灵感绘图功能,付费后可在“合法合规前提下使用”  网易云音乐内测上线“私人DJ” 打造AI推荐音乐助手  GPT-4不能在麻省理工学院获得计算机科学学位  彬州市第三届青少年机器人创新大赛成功举办  九号公司主导制定短途交通和送物机器人领域首个国际标准,标志着零的突破发布  如何用户外电源给无人机实现持久续航  微软商店 AI 摘要功能开启预览,帮助用户迅速了解应用评价  英特尔张宇:边缘计算在整个AI生态系统中扮演重要角色  650亿参数,8块GPU就能全参数微调:邱锡鹏团队把大模型门槛打下来了  【趋势周报】全球元宇宙产业发展趋势:ChatGPT的出现,将元宇宙实现至少提前了10年  利用AI技术更好地发展农村电商  AI拉动PCB发展|行业发现  1.6亿美元收购Singularity AI,昆仑万维布局通用人工智能  中国移动副总经理高同庆:打造人工智能时代的智能服务运营新范式 

400 128 6709
E-mail

contact@tlftec.cn

扫一扫,添加微信

©  云南淘乐房科技有限公司 版权所有  滇ICP备2025071560号  

云南淘乐房科技有限公司 云南淘乐房科技有限公司 云南淘乐房科技有限公司 云南淘乐房科技有限公司 云南淘乐房科技有限公司 云南淘乐房科技有限公司 云南淘乐房科技有限公司 云南淘乐房科技有限公司 云南淘乐房科技有限公司 云南淘乐房科技有限公司