新唐cortex-m0一个 printf为什么那么大?(新唐人员的解答)

使用SWO代替UART,实现Printf打印功能 JTAG接口中,有个SWO引脚,一直没有在意,也没有去研究过是干嘛用的。直到发现ST-LINK V2-1上也有个SWO引脚,于是去研究学习它的作用,用起来相比UART方得便多。 1 写在前面 SWO:Serial Wire Output,串行线输出 SWV:Serial Wire Viewer,串行线查看器 ITM:Instrumentation Trace Macrocell,仪器跟踪宏单元 ... 阅读详情

  笔者去了新唐Mini51的发布会,这次的板子比去年的M051,功能和附件上多了很多,而不只是一个最小系统,可以在板子焊接新的器件,也自带了一些LED灯和可变电路,还有I2C模块。

  于是我问了一个printf为什么会这么大?

  printf是keil(笔者用的keil开发的)内部的封装,由于可变参等问题,内部的封装非常复杂,新唐的人员也不知道为什么会那么大,但是有个方法可以减少它的大小,方法如下:

 

  Keil的project options上选“Target' -> “Use MicroLib".

  如图:

 

将左上角的Use Miccro LIB复选款打上勾就可以了

STM32嵌入式开发从入门到进阶:核心架构、外设驱动与项目实战指南 微控制器(MCU)作为嵌入式系统的核心,其架构与开发模式是工程师必须掌握的基础。ARM Cortex-M系列内核凭借其高性能、低功耗及丰富的中断与调试特性,已成为现代嵌入式开发的主流选择。这种RISC架构通过高效的总线矩阵和存储器映射,为复杂外设管理与实时任务处理提供了硬件基础,其技术价值在于显著提升了开发效率与系统可靠性。在物联网、工业控制等应用场景中,开发者需要灵活运用GPIO、定时器、串口等外设,并借助中断与DMA机制优化性能。本文以STM32这一拥有庞大生态的Cortex-M微控制器家族为例,系统解 阅读详情

相关推荐

从Arduino到专业嵌入式开发:跨越鸿沟的进阶路径与核心技术解析

嵌入式系统开发是连接硬件与软件的核心技术领域,涉及微控制器、实时操作系统和底层驱动编程。其基本原理是通过直接或间接操作硬件寄存器来控制外设,实现特定功能,技术价值在于能够构建高可靠性、低功耗、实时响应的智能设备。在物联网、工业自动化、消费电子等广泛的应用场景中,嵌入式开发都扮演着关键角色。对于许多开发者而言,Arduino平台以其**极简的上手流程**和丰富的**生态系统**,成为了接触嵌入式世界的第一个台阶。然而,要深入专业领域,必须理解从封装库函数到直接操作寄存器、从集成开发环境到手动配置工具链的跨越,

weixin_33922672的博客 425

三款开源轻量级printf,修一修就能跑~

nanoprintf 是用 C89 编写的,以实现最大的编译器兼容性。>, 有一些朋友问到有没有开源的printf直接可以拿来用的,不想再重复造轮子了,一些老维护项目软件架构也不能随便换,只是想加入这个组件方便以后排查问题,那当然是有的,毕竟开源界的道友们还是非常无私的。所以整体lwprinf功能的选择会更加的丰富,而且这个项目文档案例也比较丰富,根据自己的情况进行功能的选择,挺香的。兼容的输出函数,只需要几 kB 的非易失性存储器,较低的内存占用,适用于嵌入式系统.

最后一个bug的博客 1526

ARM单片机启动流程全解析:从硬件复位到main函数执行

在嵌入式系统开发中,启动流程是程序运行的基石,它决定了系统从硬件上电到软件执行的完整路径。其核心原理在于硬件初始化、向量表定位和运行环境构建。理解这一流程对于实现稳定可靠的嵌入式应用至关重要,尤其在Bootloader开发、IAP(在应用编程)和系统故障排查等场景中。本文以ARM Cortex-M系列为例,深入剖析启动流程的三个阶段与两次关键跳转,涵盖时钟树配置、内存映射、栈堆初始化等核心环节,并结合实际工程实践,探讨如何优化启动速度、实现自定义Bootloader以及高效调试启动失败问题。掌握这些知识,能

cuixie2370的博客 398

Keil添加printf输出串口

参考官方文档:https://www.keil.com/support/man/docs/jlink/jlink_trace_itm_viewer.htm 关于ITM的介绍参见:https://blog.youkuaiyun.com/hanchaoman/article/details/102494914    Debug (printf) Viewer可以通过ITM0输出printf内容,通过以下步骤可以打开显示串口输出。 1.将ITM端口寄存器定义添加到源代码中。同时在源代码中添加一个写入ITM Port 0寄.

radarsmile的博客 3745

STM32F407ZGT6深度工程实践:从蓝桥杯到工业量产

STM32F407ZGT6作为Cortex-M4内核的经典高性能单片机,其核心价值远不止于浮点运算或参数指标,而在于对真实嵌入式工程约束的系统性适配。它融合了可重映射外设、高精度ADC校准、TCM内存架构、DMA地址对齐等底层机制,构成一个可验证、可推演的硬件世界模型。在工业控制、智能仪表与教学平台等场景中,该芯片凭借LQFP144封装下的引脚复用灵活性、RTC后备域供电时序鲁棒性及Flash IAP断电保护设计,支撑起高可靠性量产需求。结合蓝桥杯等实战训练路径,开发者得以建立从寄存器操作到EMC整改的完整

weixin_34185512的博客 367

告别HardFault抓狂!手把手教你给STM32F103装上CmBacktrace错误追踪库(Keil+STM32CubeMX)

本文详细介绍了如何在STM32F103开发中使用CmBacktrace错误追踪库,帮助开发者快速定位HardFault等错误。通过Keil和STM32CubeMX的集成配置,CmBacktrace能自动捕获错误类型、调用栈和寄存器状态,大幅提升调试效率。特别适合ARM Cortex-M系列MCU开发者解决嵌入式调试难题。

weixin_30326741的博客 376

nanoprintf的轻量级串口printf输出移植

以下是移植nanoprintf。

2301_79036162的博客 927

Visual Studio 2022 + VisualGDB 搭建 STM32 开发环境全攻略

嵌入式开发中,STM32 项目常面临代码补全卡顿、调试效率低等问题。通过集成 ARM GCC 工具链与 GDB 调试器,可在 Visual Studio 2022 中实现智能感知、断点调试和外设寄存器查看。VisualGDB 作为桥梁,将 ST-Link 调试探针与 VS2022 无缝对接,显著提升代码导航与重构效率。该方案适用于需要维护多个 STM32 项目的工程师,以及追求现代化开发体验的学生和爱好者。本文详细记录了从环境配置到调试运行的全流程,并分享常见问题排查技巧。

weixin_34161064的博客 379

nanoprintf社区与生态:如何贡献代码与参与项目发展的完整指南

**nanoprintf** 作为嵌入式系统领域最小巧的printf实现,其成功不仅源于卓越的技术设计,更得益于活跃的开源社区和健康的项目生态。对于想要参与这个最小化格式化库发展的开发者来说,了解如何有效贡献代码和参与社区互动至关重要。本文将为您提供一份完整的nanoprintf社区参与指南,帮助您从使用者成长为贡献者。 ## 🚀 nanoprintf项目概述与核心价值 nanoprintf

gitblog_00738的博客 350

富芮坤FR8016HA BLE 5.0 SoC开发实战:从开箱到低功耗物联网节点设计

低功耗蓝牙(BLE)技术是物联网设备实现无线连接与数据传输的核心技术之一,其核心原理在于通过优化的协议栈和连接管理,在保证通信可靠性的前提下,极大降低设备功耗。BLE 5.0标准进一步提升了传输速率、通信距离与广播容量,为传感器数据上报、设备控制等场景提供了更强的技术支撑。在工程实践中,基于SoC(片上系统)的方案成为主流,它将处理器、射频、存储及多种外设集成于单一芯片,能显著简化设计、降低成本并优化功耗。本文以富芮坤FR8016HA这款国产BLE 5.0 SoC为例,深入剖析其55nm成熟工艺带来的供应链

weixin_30673611的博客 374

【Proteus仿真】STC15单片机+PCF8583+LCD1604显示

【Proteus仿真】STC15单片机+PCF8583+LCD1604显示

perseverance51博客 2012

从51单片机到Linux开发板:嵌入式工程师的硬件演进与实战指南

嵌入式系统开发的核心在于通过硬件平台实现软件与物理世界的交互。其基本原理是通过微控制器或应用处理器执行程序,驱动外设完成特定功能。这一技术价值在于将计算能力嵌入到各类设备中,实现智能化控制,广泛应用于物联网终端、工业控制、消费电子和智能家居等领域。从经典的51单片机到功能强大的ARM Linux开发板,技术栈的演进反映了项目复杂度提升的需求。本文基于STM32和全志T113等热门平台,结合GPIO、UART、定时器等基础外设操作,以及交叉编译、设备树等系统级概念,分享从裸机编程到Linux系统开发的实战经验

weixin_30384217的博客 426

STM32F103R8T6移植FreeRTOS完整实战:架构设计、配置要点与疑难解答

在嵌入式系统开发中,RTOS(实时操作系统)是提升复杂业务处理能力的核心基础软件,它通过任务调度机制让多任务并发执行成为可能。理解RTOS原理,有助于开发者合理规划系统资源,提高代码的可维护性与实时响应能力。FreeRTOS作为经典的开源实时内核,以其轻量、稳定、可裁剪等优势,被广泛应用于工业控制、物联网终端、智能家居等资源受限的MCU平台。在Cortex-M3内核的STM32上,移植FreeRTOS涉及文件组织、内存管理、中断接管、优先级配置等多个关键环节,任何细节失误都可能导致系统运行不稳定。本文以ST

weixin_34332905的博客 484

嵌入式内存管理核心考点:堆栈、对齐与大小端实战解析

内存管理是嵌入式系统开发的根基,也是面试中区分能力层次的关键领域。理解内存分区与堆栈机制,是排查系统崩溃的前提;而内存对齐规则直接决定结构体大小与访问效率,影响通信协议解析和资源占用。大小端字节序则关乎多字节数据在不同设备间的正确传输,是网络通信与跨平台开发不可忽视的细节。在实际工程中,FreeRTOS任务栈溢出检测与栈水位监控是保障长期稳定运行的重要手段。本文围绕堆栈本质、内存对齐、大小端存储以及FreeRTOS堆栈溢出检测等高频考点,结合真实项目场景,解析其原理与实战应用,帮助开发者构建完整的内存管理知

weixin_34232744的博客 366

nanoprintf:用C99编写的微小的可嵌入printf替代品

纳米印刷 nanoprintf是snprintf和vsnprintf的嵌入式系统的实现,当完全启用时,其目标是符合C11标准。 nanoprintf不进行内存分配,并且使用少于100字节的堆栈。 nanoprintf在Cortex-M架构上可编译为1-3KB的代码。 nanoprintf是样式的。 存储库的其余部分是测试和脚手架,不需要使用。 nanoprintf使用C99的最小方言编写,以实现最大的编译器兼容性,并且可以在32位和64位模式下以最高警告级别在clang,gcc和msvc上进行干净编译。 这真的很难编写可移植的C89代码,顺便说一句,如果你没有什么整体式使用持有转换后的

snprintf:snprintf的独立实现

独立的snprintf和vsnprintf 该存储库中包含一个相对简单的snprintf和vsnprintf ,我在一两个小时的时间内编写了这些信息,用于业余爱好者的微内核。 我发现自己过去几次编写此代码或类似代码,因此决定编写一个涵盖我大部分用例的snprintf合理全面的实现。 它不包括支持: 浮点数:FP不应该在内核中使用,而打印浮点数并不是我现在很感兴趣的事情。 %n :我从不需要它。 实施起来相当琐碎(5或6行)。 宽字符:除了UTF-8,我不打算支持任何其他功能。 同样,如果需要,这应该是一个简短的补丁。 * precision,即在下一个参数中指定精度:内核中不需要它。 如果您需要它,很短的路程。 POSIX扩展,例如%m$和*n$样式格式说明符,以及' (千位分隔符)格式标志。 纯粹为了实现的简单性而避免了这些。 该代码在编写时就考虑了可扩展性,因此,如果需

嵌入式固件进阶:启动流程、故障定位与OTA升级实战

在嵌入式开发中,MCU上电后的启动流程是决定系统稳定性的基石,也是从“能跑”到“可靠运行”的分水岭。理解Cortex-M内核的复位向量、栈指针初始化以及C运行时环境准备,是掌握底层原理的核心,而HardFault寄存器分析与栈回溯能力,则是快速定位随机死机、异常复位等疑难故障的钥匙。随着设备量产,OTA升级的工程化设计变得至关重要,它涉及Bootloader分区管理、固件签名校验、断点续传与失败回滚等关键技术,直接关系到产品的可维护性与用户体验。本文深度拆解启动流程的每个细节,结合故障定位方法论与可落地的A

weixin_34228387的博客 285

AWS入门实践-如何在AWS云上创建一个内外网隔离的生产环境

在 AWS 上建立一个内外网分离的生产环境,可以减少应用服务的暴露面,有效的保证你的应用服务器的安全。通常我们会将web应用放在外网的子网内,数据库服务器等放在内网的子网。我们将按照下图来部署动手实践环境,实现在public subnet的EC2虚拟机可以直接通过互联网可以访问,在Private subnet的EC2虚拟机不能通过互联网直接访问,但是却可以在内部来访问互联网安装应用等等。

weixin_39108752的博客 2995

WCH DAP-LINK驱动安装与Keil配置实操指南

调试器是嵌入式开发中连接IDE与目标芯片的桥梁,而CMSIS-DAP作为ARM定义的标准化调试接口,让不同厂商的MCU可以共用同一套调试工具。理解其工作原理,有助于快速解决驱动识别、连接失败等常见问题。在Keil环境下,正确选择调试器类型、配置Flash算法并处理Utilities联动,即可实现稳定下载与在线调试。本指南从CMSIS-DAP基础概念出发,详细讲解WCH-Link的驱动安装步骤、Keil工程配置要点、LinkUtility的实用技巧及高频报错排查方法,帮助开发者避开兼容性陷阱,高效上手ARM

weixin_33946020的博客 345

PVT(Process Voltage Temperature)

芯片PVT

网始如芯个人博客 3万+

livox avia平台搭建

livox雷达数据采集平台搭建

Shilong的博客 1310
上一篇: 读书,因快乐而存在
下一篇: 新唐cortex-m0,RS485通讯(二),一个硬币的作用
memoryjs
博客等级 码龄18年 240粉丝 113原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值