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之类的开发板,水平基础趋近于零,所以在写这个系列的时候抱着记录的心态.还望不足之处还望大佬们指正. <论语> ...
随机推荐
- MySQL高可用之ProxySQL + MGR 实现读写分离实战
部署MGR 1.MGR 前置介绍 阿里云RDS集群方案用的就是MGR模式! 1.1.什么是 MGR MGR(MySQL Group Replication)是MySQL 5.7.17版本诞生的,是My ...
- 创建mysql容器
docker run -d --name node2 -e "container=docker" --privileged=true new/centos_sshd /usr/ ...
- ZigZag Conversion——LeetCode进阶路⑥
原题链接https://leetcode.com/problems/zigzag-conversion/ 没开始看题目时,小陌发现这道题似乎备受嫌弃,被n多人踩了,还有点小同情 题目描述 The st ...
- 在MySQL数据库中保存布尔型数据
在存储数据时,经常会用到"是"."否"或者"有"."无"这种数据,这种时候就要应用布尔型这种数据类型了.那如何在M ...
- 最适合初学者的简单JAVAWEB项目快速入门
最近学习了一段时间JavaWeb,但做项目一直做不出来.相信很多初学者都有和我一样的问题,即为什么我学了,但我不会做?以及如何做一个简单的Web项目?对于初学者来说,我感觉可能从我,一个初学者角度来回 ...
- WinForms中实现Adobe PDF Reader实现旋转PDF功能
实现效果: 问题点:Adobe PDF Reader中并没有可以直接旋转的方法 LoadFile 加载文件,文件URL地址 GotoFirstPage 到第一页 GotoLastPage 到最后一页 ...
- Session的妙用
Session 就是浏览器从开启到关闭(或者是到Session过期)的整个过程 我们可以通过Session对象来拿到我们之前已经输入过的东西 默认设置Session过期的时间:这是真实业务的需求: & ...
- GStreamer开发笔记(七):gstreamer播放ogg详解
前言 gtreamer播放ogg音频文件的流程讲解. Ogg Ogg全称是OGGVobis(oggVorbis)是一种音频压缩容器格式.Ogg格式不仅是一个高效的容器格式,它还融合了Vor ...
- SM30里DEC数据显示0
需求:DEC数据在维护的时候显示0 1,设置数据元素对于的域带转换历程. 2,写转换历程函数(注意两个历程的输入和输出类型,这个需要修改) FUNCTION conversion_exit_zdays ...
- 浅谈开源在线客服系统与 APP 集成的技术方案与优劣势
在为移动端 App 接入在线客服系统的过程中,我经历了长时间的技术选型探索.最初,我也曾被一些"技术理想主义"选项所吸引,比如让用户自己研发界面我提供 API 以获得最高自由度,或 ...