资讯动态

Zephyr应用: 07-Button

发布时间:2026/9/29 7:33:40 来源:尧图企业网站定制
按照你前面03-Blinky的方式摘要:本文基于 Zephyr RTOS 在 Nucleo-F303RE 开发板上从零搭建04-Button工程,循序渐进地讲解 GPIO 输入编程。全文共分三个版本:第一版采用Polling(轮询)方式读取按键状态;第二版改用GPIO 中断 + Callback,让 CPU 在按键状态变化时才响应;第三版在中断基础上加入LED 输出,实现「按下点亮、松开熄灭」。通过三版对比,帮助读者真正理解 Zephyr 的GPIO + Device Tree + Interrupt完整链路,并掌握DT_ALIAS、gpio_pin_configure_dt、gpio_pin_interrupt_configure_dt、gpio_init_callback等核心 API 的用法。前置要求在开始本文之前,建议你先掌握以下基础知识,这样读起来会更顺畅:Zephyr 基础工程搭建:了解 Zephyr 工程的基本目录结构(CMakeLists.txt、prj.conf、src/main.c),以及如何通过west创建、编译和烧录一个最小工程;west 命令用法:熟悉west build、west flash等常用命令,以及-b board指定目标板、-p always强制 pristine build 等参数的含义;Device Tree 基本概念:理解 Device Tree 如何描述硬件(如 GPIO 引脚、别名aliases),以及DT_ALIAS()宏如何把硬件节点映射到 C 代码中的gpio_dt_spec。如果你对以上内容还不熟悉,建议先阅读上一篇《03-Blinky:Zephyr GPIO 输出入门》,那里详细讲解了从零搭建 Zephyr 工程、使用west编译烧录,以及通过 Device Tree 操作 GPIO 输出的完整流程。本文的工程结构、编译命令和 Device Tree 用法都会沿用 03-Blinky 的思路,先打好基础再继续会事半功倍。按照你前面03-Blinky的方式,我们不要直接修改 Zephyr 自带 sample,而是在:~/workspace下面创建我们自己的04-Button测试工程。建议目录结构:~/workspace/ └── 04-Button/ ├── CMakeLists.txt ├── prj.conf └── src/ └── main.c1. 创建工程目录0. 硬件准备动手之前,先确认一下板载外设的引脚对应关系。Nucleo-F303RE 板上有两个我们马上要用到的外设:USER Button(蓝色按键):连接到PC13,对应 Device Tree 中的sw0别名;LD2(绿色 LED):连接到PA5,对应 Device Tree 中的led0别名。注意:这两个外设都已经板载,不需要额外接线。只要把板子通过 USB 连到电脑即可,后面的代码会通过DT_ALIAS(sw0)和DT_ALIAS(led0)自动找到它们。下面是板载外设与 MCU 引脚的对应关系示意图:STM32F303RE MCUNucleo-F303RE 板载外设sw0 别名led0 别名USER Button(蓝色按键)LD2 LED(绿色)PC13(GPIO Input)PA5(GPIO Output)对应的 Device Tree 别名关系如下:sw0 ──→USERButton ──→ PC13 led0 ──→ LD2 LED ──→ PA5在后面的代码中,我们不会写死PC13或PA5,而是通过DT_ALIAS(sw0)和DT_ALIAS(led0)让 Zephyr 从 Device Tree 自动解析出正确的引脚。这样代码与具体硬件解耦,换一块板子时只需修改 Device Tree,而无需改动 C 代码。1. 创建工程目录cd ~/workspacemkdir -p 04-Button/srccd 04-Button2. 创建 CMakeLists.txtcatCMakeLists.txt'EOF' cmake_minimum_required(VERSION 3.20.0) find_package(Zephyr REQUIRED HINTS \$ENV{ZEPHYR_BASE}) project(button) target_sources(app PRIVATE src/main.c) EOF3. 创建 prj.conf先使用最简单的配置:catprj.conf'EOF' CONFIG_GPIO=y CONFIG_PRINTK=y EOF4. 创建 main.c第一版我们不使用中断,先学习最基本的 GPIO 输入。catsrc/main.c'EOF'

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑