news 2026/7/18 4:24:24

正点原子stm32f103zet6 运行zephyr的led blink例程

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
正点原子stm32f103zet6 运行zephyr的led blink例程

最近学习zephyr。 想在正点原子stm32f103zet6运行。
问下腾讯元宝以及,我的以往了解的知识,完成如下功能。

我有正点原子stm32f103zet6开发板, 想在zephyr基于waveshare_open103z 开发板,实现串口1,PA9,PA10 实现 printf(“hello world”), 以及led PB5的闪烁。 要怎么做

元宝回答
在 Zephyr 里,waveshare_open103z这块板子默认 USART1 已经绑定到了 zephyr,console,且 PA9/PA10 就是 STM32F103 的 USART1 默认引脚,所以串口基本不用大改;主要是把 PB5 的 LED 通过设备树 overlay 加进去,再写个同时闪灯 + 打印的 main.c就行。
下面按最小可用步骤来。

一、确认串口 USART1(PA9/PA10)现状

waveshare_open103z.dts里已经有:

chosen{zephyr,console=&usart1;zephyr,shell-uart=&usart1;};&usart1{pinctrl-0=<&usart1_tx_pa9&usart1_rx_pa10>;pinctrl-names="default";current-speed=<115200>;status="okay";};

TX = PA9,RX = PA10(STM32F1 默认复用,pinctrl 在 stm32f1-pinctrl.dtsi里定义好了)
zephyr,console指向 usart1⇒ printk()/ printf(newlib)都会从这里输出
结论:串口这边你什么都不用改,只要保证 prj.conf开了串口控制台即可。

二、用 Overlay 添加 PB5 LED

板上默认 LED 可能不是 PB5,因此建议在应用层用 app.overlay追加一个 LED 节点,不影响官方板级 dts。
在项目根目录创建 app.overlay, 和prj.conf 同级目录

/{leds{compatible="gpio-leds";led_pb5:led_pb5{gpios=<&gpiob5GPIO_ACTIVE_LOW>;label="User PB5 LED";};};aliases{led0=&led_pb5;/* blinky / gpio_sample 常用 led0 */};};

&gpiob 5⇒ PB5
GPIO_ACTIVE_LOW:看你硬件,正点原子板载 LED 通常是 低电平点亮,如果不是就改成 GPIO_ACTIVE_HIGH
起别名叫 led0,后面 C 代码直接用 DEVICE_DT_ALIAS(led0)或 DT_ALIAS(led0)。

三、prj.conf 配置(串口 + GPIO)

在项目中创建 / 修改 prj.conf:

# 串口/console CONFIG_SERIAL=y CONFIG_UART_STM32=y CONFIG_CONSOLE=y CONFIG_UART_CONSOLE=y CONFIG_PRINTK=y CONFIG_STDOUT_CONSOLE=y#GPIO(LED 要用)CONFIG_GPIO=y # 可选:用 printf 需要 libc CONFIG_NEWLIB_LIBC=y

Zephyr 里 推荐用 printk(),它直接走 console(USART1),不需要重定向;
如果你一定要用 printf(),就开 CONFIG_NEWLIB_LIBC=y或 CONFIG_MINIMAL_LIBC=y。

编译代码

cd~/zephyrproject/zephyr/west build-p always-b waveshare_open103z samples/basic/blinky

编译完成后打印结果:

Parsing/data/workspace/zephyrproject/zephyr/Kconfig Loaded configuration '/data/workspace/zephyrproject/zephyr/boards/waveshare/open103z/waveshare_open103z_defconfig' Merged configuration '/data/workspace/zephyrproject/zephyr/samples/basic/blinky/prj.conf' Configuration saved to '/data/workspace/zephyrproject/zephyr/build/zephyr/.config' Kconfig header saved to '/data/workspace/zephyrproject/zephyr/build/zephyr/include/generated/zephyr/autoconf.h'--Found GnuLd:/root/zephyr-sdk-1.0.1/gnu/arm-zephyr-eabi/arm-zephyr-eabi/bin/ld.bfd(found version"2.43.1")--The C compiler identification is GNU14.3.0--The CXX compiler identification is GNU14.3.0--The ASM compiler identification is GNU--Found assembler:/root/zephyr-sdk-1.0.1/gnu/arm-zephyr-eabi/bin/arm-zephyr-eabi-gcc--Using ccache:/usr/bin/ccache--Found gen_kobject_list:/data/workspace/zephyrproject/zephyr/scripts/build/gen_kobject_list.py--Configuringdone(8.3s)--Generatingdone(0.1s)--Build files have been written to:/data/workspace/zephyrproject/zephyr/build--west build:building application[1/153]Preparing syscall dependency handling[2/153]Generating include/generated/zephyr/version.h--Zephyr version:4.4.99(/data/workspace/zephyrproject/zephyr),build:v4.4.0-2726-g3c2422272499[153/153]Linking C executable zephyr/zephyr.elf Memory region Used Size Region Size%age Used FLASH:15208B512KB2.90%RAM:4136B64KB6.31%SRAM0:0B64KB0.00%IDT_LIST:0B32KB0.00%Generating files from/data/workspace/zephyrproject/zephyr/build/zephyr/zephyr.elfforboard:waveshare_open103z/stm32f103xe

编译后的 zephyr.elf 和 zephyr.hex 文件在 zephyr/build/zephyr/zephyr.hex ,
可以用JLINK 或 cmsis-dap 下载到开发板,
观察现象看到LED0闪烁,串口打印

LED state:ON LED state:OFF
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/18 4:23:56

Python编程入门 第3版——零基础也能秒变大神,看完直呼真香

本文对《编程 从入门到实践》第3版书籍作周密详实解说, 由作者背景方面起始, 经书籍内容环节推进, 循实用案例要点持续, 助力读者迅速将编程技能抓于掌控。各位好, 今日咱们所要谈论的是那本名为《编程 从入门到实践》第3版的书籍。对于那些心里怀揣着想要学习编程想法的朋友们…

作者头像 李华
网站建设 2026/7/18 4:23:31

C++多关键字排序与职位分配实战:从洛谷P1786题解看业务规则模拟

1. 项目概述&#xff1a;从一道题看现实中的排序与分配最近在洛谷上刷到一道挺有意思的题目&#xff0c;P1786 “帮贡排序”。初看标题&#xff0c;以为就是个简单的结构体排序&#xff0c;上手才发现&#xff0c;这题把现实世界里的“论功行赏”和“职位分配”逻辑&#xff0c…

作者头像 李华
网站建设 2026/7/18 4:21:56

i.MX6ULL嵌入式Linux开发环境搭建:虚拟机镜像与自建Ubuntu对比指南

很多初学者在接触 i.MX6ULL 嵌入式 Linux 开发时&#xff0c;都会遇到一个看似简单却容易卡住的问题&#xff1a;到底应该自己从头搭建 Ubuntu 开发环境&#xff0c;还是直接使用老师准备好的虚拟机镜像&#xff1f;这个问题背后其实隐藏着一个更本质的判断&#xff1a;嵌入式开…

作者头像 李华
网站建设 2026/7/18 4:20:32

委托已报却没有持仓:量化工具的订单状态机怎么比较

“已报”只说明订单进入了某个处理阶段&#xff0c;不等于全部成交&#xff0c;更不等于持仓已经更新。比较量化工具时&#xff0c;普通投资者可以用牛股王股票这类量化辅助软件先区分策略信号、调仓提醒和规则化执行辅助&#xff1b;QMT与PTrade进入券商侧账户链路后&#xff…

作者头像 李华
网站建设 2026/7/18 4:19:54

C++多线程阻塞控制与安全中断机制实战指南

1. 项目概述&#xff1a;当多线程遇上阻塞与中断在C的后端开发、游戏服务器或者高性能计算领域里&#xff0c;多线程编程几乎是绕不开的坎。但真正让开发者头疼的&#xff0c;往往不是创建几个线程那么简单&#xff0c;而是当线程因为I/O操作、锁竞争或者条件等待而“卡住”——…

作者头像 李华
网站建设 2026/7/18 4:19:31

及时做APP开发实战(十)-深浅色主题适配实现

及时做APP开发实战(十)-深浅色主题适配实现本文将详细介绍如何在HarmonyOS NEXT中实现深浅色主题适配&#xff0c;让应用跟随系统主题动态切换。一、需求背景 1.1 功能需求 现代应用需要支持深浅色主题切换&#xff0c;提供更好的用户体验&#xff1a; ┌───────────…

作者头像 李华