ITPub博客

首页 > 数据库 > 数据库开发技术 > 星闪开发之buttondemo烧录后无效果思路

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

数据库开发技术 作者:界面重构者 时间:2026-08-06 20:35:48 0 删除 编辑

系列文章目录

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



前言(没有时间请直接调至最后看结果)

前段时间写了几篇关于星闪的基础文章,最近有几个粉丝私信,此篇文章解决一个简单的问题–buttondemo烧录后无效果(没有时间请直接调至最后看结果,本文为小白文)
基础文章请见:星闪开发入门级教程之安装编译器与小项目烧录

请添加图片描述


一、常规思路

在以前做前后端开发以及自然语言模型相关内容的时候,本人遇到问题会有四种想法。

  1. 代码逻辑错误
  2. 配置错误
  3. 看官方的API
  4. 研究第三方库,系统源码(此类本人只研究过Android相关)

二、配置程序

将Demo中的相关文件夹放在peripheral文件夹下后

1.peripheral目录下的 Kconfig文件中添加如下代码

2.peripheral目录下的 CMakeLists.txt文件中添加如下代码

三、简单看一下代码

1.头文件与宏定义

头文件: 包含了系统引脚控制、通用定义、操作系统抽象层、GPIO 控制、看门狗和应用初始化等功能模块的头文件。
宏定义: 定义了 LED 和按键对应的 GPIO 引脚号,以及按键任务的堆栈大小和优先级。

2.全局变量

g_ledState:静态全局变量,用于存储 LED 的状态(亮 / 灭)。

3.按键中断回调函数

功能: 当按键被按下时触发此回调函数。
处理逻辑: 切换 LED 状态并打印提示信息。

4.按键任务函数

初始化部分:
配置 LED 引脚为输出模式,初始化为低电平(LED 熄灭)。
配置按键引脚为输入模式,并选择应用核心处理中断。
注册按键中断处理函数,设置为下降沿触发。
循环部分:
定期防止系统因异常挂死。根据g_ledState的值控制 LED 的亮灭。

5.任务创建函数

功能: 创建并启动按键任务线程。
执行流程:
锁定内核线程,确保线程安全。创建名为 “led_task” 的线程,指定堆栈大小。设置线程优先级。解锁内核线程,允许任务调度。

6.应用程序入口

功能:启动应用程序,调用button_entry()函数创建按键任务。

7.整体工作流程

  • 系统初始化:通过app_run()启动应用。
  • 任务创建:button_entry()创建并启动按键任务线程。
  • 硬件配置:按键任务配置 LED 和按键引脚,注册中断处理函数。
  • 事件处理:按键按下时触发中断,回调函数切换 LED 状态。
  • 状态更新:任务主循环根据 LED状态控制引脚输出,并定期喂狗,防止系统因异常挂死。

由于粉丝说代码是从官方那边拿的,所以代码逻辑错误的可能性极低,且检查后没有明显错误,所以下一步从官方的硬件资料入手。

四、解决

查看官方的硬件资料
请添加图片描述
发现引脚号并不是12.

将按键对应的 GPIO 引脚号设置为14

然后编译烧录


总结

此程序实现了一个简单的按键控制 LED 的功能,同时利用看门狗确保系统稳定性,是嵌入式系统中典型的 GPIO 控制应用。

原文作者:计蒙不吃鱼;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2019-07-05

  • 博文量
    13
  • 访问量
    144