zephyr学习(立创实战派开发板): 2. zephyr 点灯+串口通信
配置好了zephyr 工作环境就可以开始自己的项目开发了。
参考:应用程序开发 — Zephyr Project Documentation --- Application Development — Zephyr Project Documentation
1.官方例程
官方给出了一个app文件的例子,我们可以使用这个文件来创建自己的zephyr App 工作空间
cd <home>/zephyrproject
git clone https://github.com/zephyrproject-rtos/example-application my-app
下载了官方例子后,我选择了这种文件结构,使app和zephyr 的源文件分离的模式

注意:在zephyr源文件之外的地方编译工程需要添加几个环境变量

- ZEPHYR_BASE:zephyr主文件夹的地址
- ZEPHYR_SDK_INSTALL_DIR :编译工具的位置
- ZEPHYR_TOOLCHAIN_VARIANT :
工程文件夹如下:

2.zephyr App文件架构
一个zephyr的App文件应该包含这些文件

下面是我的App目录结构

main.c
// 注册一个日志模块
LOG_MODULE_REGISTER(blinky, LOG_LEVEL_INF); // 获取led0 的设备节点信息
#define LED0_NODE DT_ALIAS(led0)
static const struct gpio_dt_spec led = GPIO_DT_SPEC_GET(LED0_NODE, gpios); int main(void)
{
bool led_state = true; if (!gpio_is_ready_dt(&led)) {
LOG_ERR("LED GPIO device not ready");
return 0;
} //配置引脚初始化状态
gpio_pin_configure_dt(&led, GPIO_OUTPUT_ACTIVE);
while (1) {
gpio_pin_toggle_dt(&led);
LOG_INF("LED state: %s", led_state ? "ON" : "OFF");
led_state = !led_state;
k_msleep(500);// Zephyr 的内核延时函数,睡眠 500ms }
}
app.overlay
app.overlay 文件 可以覆盖原有的板子配置,可以在这里添加自己使用的板子的结构
/ {
// 定义 LED 别名
aliases {
led0 = &user_led;
};
// 定义 LED 节点
leds {
compatible = "gpio-leds";
user_led: led_0 {
gpios = <&gpio0 48 GPIO_ACTIVE_HIGH>;
label = "User LED";
};
};
};
CMakeLists.txt
CMake入口脚本
#-------------------------------------------------------------------------------
# Zephyr Example Application
#
# Copyright (c) 2021 Nordic Semiconductor ASA
# SPDX-License-Identifier: Apache-2.0 cmake_minimum_required(VERSION 3.13.1)
find_package(Zephyr REQUIRED HINTS $ENV{ZEPHYR_BASE}) project(my_led LANGUAGES C) # 定义工程 target_sources(app PRIVATE src/main.c) # 源文件
prj.conf
CONFIG_MAIN_STACK_SIZE=4096
CONFIG_LOG=y
CONFIG_LOG_DEFAULT_LEVEL=3
CONFIG_GPIO=y
其余文件都不太重要。
3.使用west执行编译:
west build -p always -b esp32s3_devkitm/esp32s3/procpu app

4.串口打印
新开一个cmd窗口:执行esp32 的串口
west espressif monitor

zephyr学习(立创实战派开发板): 2. zephyr 点灯+串口通信的更多相关文章
- Zephyr学习(二)开发环境搭建
一.概述 Zephyr支持在Windows.Linux和MacOS环境下开发,这里只介绍如何在Windows下搭建zephyr的开发环境. 二.步骤 2.1安装msys2 msys2是一个Linux模 ...
- [嵌入式学习资料]ARM开发学习详解iTOP-4412开发板使用手册
拿到的最新4412开发板学习使用手册,完全免费,分享一下 下载地址:http://pan.baidu.com/s/1ntrJA8h
- 【单片机入门】(四)应用层软件开发的单片机学习之路-----ESP32开发板PWM控制电机以及中断的使用
引言 各位大佬,晚上好啊,在上一篇博客中,我们讲了什么是UART串口通讯,以及使用USB转TTL使得单片机可以和c#上位机做一个串口通讯,接下来,为大家带来PWM的概念原理,以及实际案例,使用PWM对 ...
- 单片机学习(二)开发板LED灯的控制
目录 开发板上LED灯相关的电路图 点灯 LED闪烁 LED流水灯 其他效果 灯光二进制计数器 进阶版流水灯 开发板上LED灯相关的电路图 这是P2相关7个引脚的电路图,在默认情况下它是直接接着VCC ...
- (转载)用vs2010开发基于VC++的MFC 串口通信一*****两台电脑同一个串口号之间的通信
此文章以visual C++数据採集与串口通信測控应用实战为參考教程 此文章适合VC++串口通信入门 一.页面布局及加入控件 1, 安装好vs2010如图 2, 新建一个基于VC++的MFC项目com ...
- JZ2440开发板学习 1. 刚接触开发板, 安装驱动
一. jtag和串口驱动 1. 驱动下载 http://pan.baidu.com/s/1pJkAHJH 2. 驱动安装 禁用win10的驱动数字签名 http://www.100ask.org/bb ...
- 【嵌入式】——arm裸机开发 step by step 之 串口通信
一.在使用S5PV210的串口发送和接收的时候,首先要对S5PV210的串口进行配置,我们使用轮询方式时的配置有哪些? 1.配置GPIO,使对应管脚作为串口的发送和接收管脚 GPA0 0 1 管脚 2 ...
- [Intel Edison开发板] 05、Edison开发基于MRAA实现IO控制,特别是UART通信
一.前言 下面是本系列文章的前几篇: [Intel Edison开发板] 01.Edison开发板性能简述 [Intel Edison开发板] 02.Edison开发板入门 [Intel Edison ...
- [学习嵌入式开发板]iTOP-4412实现NFS网络文件系统
本文转自迅为:http://www.topeetboard.com 学习平台:iTOP-4412开发板 本文讲解如何在 iTOP-4412 开发板上实现 NFS 网络文件系统. 我们使用的软硬件环境是 ...
- 小白自制Linux开发板 一. 瞎抄原理图与乱画PCB
因为墨云是基于高中物理水平的电路知识来学习.而且此前也就玩过树莓派.Esp8266之类的开发板,水平基础趋近于零,所以在写这个系列的时候抱着记录的心态.还望不足之处还望大佬们指正. <论语> ...
随机推荐
- 集成学习双雄:Boosting和Bagging简介
在机器学习的世界里,集成学习(Ensemble Learning)是一种强大的技术,它通过组合多个模型来提高预测性能. 集成学习通过组合多个基学习器的预测结果,获得比单一模型更优秀的性能.其核心思想是 ...
- TVM图级优化了解
TVM图级优化按照优化范围,可分为局部优化和全局优化 局部优化是TVM图级优化的重点,其中算子融合是AI编译器必不可少的优化方法. 算子融合核心思想就是将多个算子合并成一个内核,因而无需将中间结果写回 ...
- debug与DOSBox安装&&debug命令操作
文章目录 一. DOSBox && debug使用 1.安装配置(以下方法们按照从麻烦到简便的顺序) (1) 多步骤(可行,但不推荐) (2)一步到位(强烈推荐) 2. 窗口大小 二. ...
- 基于Photon与Unreal Engine的VR协作平台开发实战教程
引言 在数字化转型加速的今天,虚拟现实(VR)技术正在重塑远程协作模式.本教程将带领读者从零开始构建一个支持多人协同的VR办公平台,通过Unreal Engine 5的强大渲染能力与Photon引擎的 ...
- Manim实现图像变形特效
在数学教学和科普领域,变形效果往往能起到事半功倍的作用,让抽象的数学概念变得生动形象. 这篇文章将通过三个典型场景,来看看如何超越默认效果的限制,制作出更专业的变形动画. 1. 几何体的形态跃迁 传统 ...
- 你了解ConcurrentHashMap吗?ConcurrentHashMap九连问
多线程环境下,使用Hashmap进行put操作会造成数据覆盖,应该使用支持多线程的 ConcurrentHashMap. HashMap为什么线程不安全 put的不安全 由于多线程对HashMap进行 ...
- 3D Gaussian splatting 03: 用户数据训练和结果查看
目录 3D Gaussian splatting 01: 环境搭建 3D Gaussian splatting 02: 快速评估 3D Gaussian splatting 03: 用户数据训练和结果 ...
- 聊聊常见的几款Agent平台:字节Coze、腾讯元器、文心智能体
你好,小钗在医疗AI.教育AI.管理AI有丰富的经验 关注公众号,回复1,与我交个朋友吧 之前我们探讨过公司AI能力的评判方式: 这里主要涉及两个方面:工程能力以及行业KnowHow. 对于一般公司, ...
- 后端性能-batch 化的想法
项目中我们提高性能或者吞吐经常使用的是 batch 化,比如说获取帐号信息,我们1条1条查询可能不如我们一次查询100条性能高. 有的时候想这样是为什么呢?因为单个请求中间有网络往返.网络延迟等原因会 ...
- USB over IP技术简介
1. USBIP 简介 在 USB 系统中,USB 设备和 USB 主机间通过 USB 线连接在一起.USB 线的长度较短,USB 设备只能安装到 USB 主机周边,设备和主机的距离也就很短.USB ...