- 博客(37)
- 资源 (2)
- 收藏
- 关注
原创 显式启用-u_printf_float和-u_scanf_float前后的代码内存体积实验
编译出的代码内存体积为23440B+464B=23904B。,编译出的代码内存体积为15252B+464B=15716B。,编译出的代码内存体积为18556B+464B=19020B。,编译出的代码内存体积为1108B+8B=1116B。可以得到明显的结论:显式启用。本文的嵌入式编译器基于。
2025-01-06 18:41:34 338
原创 在【Arduino IDE】中在线下载和离线下载【ESP系列开发板的SDK】
INFO:离线安装的【开发板管理SDK包】不是最新的,只要Arduino IDE联网,就会在线检测【开发板管理SDK包】是否为最新版本,点击。②双击Espxx安装包即可自动索引下载到Arduino安装目录,速度比在线下载快了不是一丁半点。可以看到,开发板管理器中已经包含了esp32开发板SDK包,至此安装成功。在线下载的过程并没有想象中的那么顺利,下载速度过于感人!③重新启动Arduino IDE,会跳出如下窗口,我们点击“之后”。:开发板管理SDK包放在了境外的服务器上,因此下载和访问会缓慢。
2024-12-20 17:30:56 901
原创 VSCode+arm-none-eabi-gcc交叉编译+CMake构建+OpenOCD(基于STM32的标准库/HAL库)
arm-none-eabi-gcc工具链发布时自带有2个基于newlib的预构建C库:一个是标准的newlib,另一个是newlib-nano(优化了代码大小)】单片机作为示例来进行演示,以下配置文件对于标准库/HAL库的工程是通用的,修改CMakeLists.txt里面的源文件和头文件引用部分即可。文件移植到自己的标准库 / HAL库工程后,需要重新生成CMake和当前项目相关的配置,否则会报错。在编译时,如果-specs=nano.specs被传递给编译器,那么一个专门为newlib-nano配置的。
2024-12-17 18:48:53 1306
原创 解决VSCode无法识别相对路径的问题
近日在学习python文件操作时,发现使用VSCode作为编辑器时,文件的相对路径会出问题,报错“指定路径下找不到文件”,无法找到想要的文件。上述两者效果是一致的,VSCode有UI和json文本两者形式设置,任选一种即可,笔者推荐json文本形式设置。修改原理:因为此时相对路径的【参照位置】,是打开的“工程项目文件夹”,不是源代码文件目录所在位置。在基于以上的情况下,出现了相对路径报错的问题。修改原理:此时相对路径的【参照位置】,是“当前源代码的文件目录”。为示例,此时相对路径的【参照位置】是。
2024-12-12 17:42:45 1382 1
原创 makefile脚本需要修改的地方
嵌入式领域中,在正式发行代码版本时,会严格区分Release和Debug版本,Debug版本用于开发人员内部开发调试所用的代码版本;Release版本面向外部的市场客户,此时的代码往往就会设置代码优化等级,目的是为了将MCU资源利用最大化和优化客户体验(修改为你工程目录中需要参与编译的启动文件路径。修改为你工程目录中需要参与编译的源文件路径。修改为你工程目录中参与链接的链接脚本路径。修改为你工程目录中需要参与编译的头文件路径。派生而来,对makefile脚本需要修改的地方作补充说明。
2024-12-05 16:51:39 261
原创 OpenOCD之J-Link下载
1.下载USB Dirver Tool.exe,选择J-Link dirver,替换成WinUSB驱动。(⭐USB Dirver Tool工具可将J-Link从WinUSB驱动恢复为默认驱动⭐)同理 将launch.json中的J-link调试段的 interface 处后面的接口文件名修改成上述的。5.将task.json中的 -f interface处后面的接口文件名修改成上述的。6.点击Download——>选择J-link下载,即可下载。4.在jlink-swd.cfg文件的。
2024-11-24 19:43:58 584
原创 OpenOCD之flash write_image和program命令
OpenOCD监听端口的各功能:OpenOCD配置完成并正确连接上开发板后,就会监听6666,4444,3333端口,分别用于tcl, telnet,gdb-server。
2024-11-05 16:42:02 1121
原创 基于VSCode搭建开源嵌入式环境的make构建工具选择
大家可以自行选择使用上述两个make工具中的任意一个,笔者比较推荐xpack-windows-build-tools,xpack-windows-build-tools是开源作者从Linux移植到Windows上的构建工具包。
2024-10-19 10:48:12 576
原创 解决VSCode文件的中文GBK和UTF-8编码之间乱码问题
INFO:近日笔者在使用VSCode编码环境的时候,出现了中文和UTF-8两者之间乱码的问题,特编写本片文章,以作学习记录。
2024-09-16 17:28:23 2288 1
原创 常用的代码注释标签
表示代码可能包含临时解决方案、糟糕的实践、或者有待优化的部分,通常意味着此处的实现方式并不理想,应在未来重新审视和改进。- 标记一段临时性的、非常规的解决方案,通常用于应对紧急问题,但长期来看不是最优解。- 请求他人复查某段代码,可能是为了确认设计决策、逻辑是否正确或改进代码质量。- 标记已弃用的代码,提醒开发者这段代码未来可能会被移除。- 添加一些说明文字,提供一些重要提示或背景信息。- 指出代码中存在问题或bug,需要修复的地方。- 标记正在进行的工作,表明这部分代码尚未完成。
2024-09-11 20:34:04 302
原创 变量/函数命名规则
①小驼峰命名,首单词首字母小写+后面每个单词首字母大写,举例:printEmployeePaychecks();firstName;②大驼峰命名(帕斯卡命名法),每个单词首字母大写,举例:PrintEmployeePaychecks();FirstName;二、下划线法(蛇形命名法),所有单词皆小写,以下划线分隔:print_employee_paychecks();写这篇文章,提醒自己总是记不住如何命名变量和函数。一、驼峰命名法:分小驼峰命名和大驼峰命名。
2024-09-05 10:11:27 285
原创 基于VSCode和MinGW—开发C/C++的环境部署
下面4个文件几乎都是==开箱即用==,只需要修改少许内容,你可以用于替换掉自己工程下的.vscode文件夹中的4个文件。适用于工程含有==单个.c文件==或==多个.c文件==的情况,需要修改的地方笔者会加以说明。
2024-08-28 16:29:24 740
原创 谈谈SVN服务器的远程部署(内网和外网之间穿透访问)
上述2种方式都需要一定的付费才能体验到更好的服务。想折腾,选择内网穿透;想一步到位,选择SVN服务托管平台。我个人还是建议去学习内网穿透,折腾起来还是很有意思的。
2024-08-22 15:37:06 856
原创 内网穿透原理及其客户端
一般而言,内网中的多台主机在没有固定公网IP的情况下,NAT(网络地址转换技术)使得内网中的主机可以共享一个公网 IP 地址访问外部网络,这样就可以令IPv4公网地址利用最大化,但反过来,外网主机通常无法直接访问内网主机。同一个内网下的各个主机是可以直接通过内网IP互相访问的,举个例子:相信大家自己在网上买过路由器安装的人,给路由器连接上网线后,说明书会给1个内网的静态IP地址我们登陆,此时我们使用手机输入这个IP地址,便可跳转到路由器的设置界面去设置密码,加密方式等等,这就是经典的内网中主机访问。
2024-08-13 17:23:33 506
原创 解决VSCode开发Python,终端输出中文乱码的问题
至此Windows下的Python环境编码方式和VSCode的文件编码方式统一成了UTF-8,而VSCode的内置终端编码方式固定是UTF-8,是无法修改的,在上面的2.乱码根因中笔者已经指出来过了,此时我们在VSCode中编译运行Python代码,在VSCode内置终端输出中文就正常了。
2024-08-07 22:38:31 1862 4
原创 解决VSCode终端输出和PyCharm终端输出显示不一致的问题
最近在学一个python进度条程序的时候,发现VSCode的虚拟终端和PyCharm的终端输出不太一样。在不使用code runner插件,而使用虚拟终端输出后,怎么运行和停止代码呢?2)如果不想卸载code-runner插件的话,仍想将。下面的选项,令VSCode运行Python的程序结果在。将鼠标光标移动至虚拟终端窗口,任意点击一下。,这样VSCode就可以将代码的运行结果。1)将code-runner插件。
2024-08-07 10:54:43 442
原创 芯片架构及对应指令集—思维导图
Linux发行版OS(例如Ubuntu操作系统)的构成:Linux内核(管理系统资源、抽象地访问硬件等)+GNU组件(例如GCC/GDB/glibc/coreutils/binutils等等)+APP层(终端Bash、浏览器、应用软件等等桌面环境)可由开发者自由裁剪,用以适配不同的芯片架构,这也就是为什么当我们去下载诸多Linux发行版时,总能看到不同后缀(x86_64/arm/aarch64等等)的iso镜像版本。APP 层需要适配 OS 内核,同理,OS 内核也要适配芯片硬件架构。
2024-08-05 20:28:12 278
原创 开源好用的国产轻量文本编辑器 — notepad--
Notepad-- 是一款免费、开源的文本编辑器,专为程序员和开发人员设计。它支持多种编程语言,并提供了丰富的功能来提高代码编辑的效率。使用GPL 3.0开源协议。
2024-07-26 21:53:19 1268
原创 VSCode如何在项目工程中,使用全局搜索和局部搜索功能?
在keil5 IDE中,我们非常熟悉地按下ctrl+F快捷键,可实现全局搜索/局部搜索某个变量和函数。那么在VSCode中,怎么实现全局搜索/局部搜索呢?全局搜索:点击VSCode的右边的放大镜。局部搜索:也是快捷键ctrl+F。
2024-07-26 20:13:43 2919
原创 ARM Cortex-M系列内核的编译信息内存分布——思维导图
RW-data是已初始化的可读可写变量;ZI-data是未初始化的可读可写变量。Code就是代码占用大小;RO-data是只读常量;
2024-07-24 22:31:19 141
原创 记录解决ESP32-C3软件环境搭建和能识别串口但下载不进程序的问题(VSCode+乐鑫官方ESP-IDF插件)
1. 如果VSCode下载ESP-IDF插件出现失败,卸载ESP-IDF插件和ESP-IDF曾经下载的资源包,然后电脑断开网线,连接==WIFI==重新下载即可。2. 如果出现串口无法下载程序的情况,卸载CH340X的2个驱动,再次安装,重启电脑,COM口选择出现ESP32-C3(QFN32)(revision v0.3)就可以了。
2024-07-23 19:07:34 1556
原创 VSCode+arm-none-eabi-gcc交叉编译+Makefile构建+OpenOCD(基于STM32的标准库)
对于嵌入式开发人员,想必最熟悉在Keil MDK或者IAR的IDE下的程序开发了。Keil MDK的调试和仿真功能是其他IDE所不能比拟的,在公司内部的项目合作开发方面,兼容性也是非常优秀;至于IAR IDE,笔者没用过。本文旨在搭建一套基于VSCode的嵌入式开发环境,了解从编译到调试的过程。📚NOTE:该框架存在的目的是让人们不再重复造轮子!诸如clangcmakeOpenOCDGNU sedQEMU Arm等第三方工具资源都整合在xPack项目,
2024-07-20 17:48:15 3034 7
原创 STM32-HAL库的EXTI外部中断不能使用HAL_Delay( )函数的问题剖析
在上一篇文章中,我们讲到了使用外部中断不能退出的原因,这次我们来说另外一个原因:在外部中断中使用HAL_Delay()函数会进入死循环。我看网上很多大佬说,把系统滴答定时器的优先级调高或者自定义1个延时函数替代HAL_Delay(),我个人更偏向于后者。例如下述实例,在中断回调服务函数里调用HAL_Delay(),会导致卡死,无法外部按键触发中断。低优先级(发生了中断嵌套),导致系统滴答定时器不执行,无法进行滴答定时,上述的。, 意为:当系统滴答定时时间小于等待预设时间,则循环,否则退出。
2024-07-09 12:06:05 533
原创 什么是服务器?有什么用?
答:服务器是一种高性能的电脑主机,处于全年无停的开机状态,如今我们在手机/电脑/平板等设备浏览世界各地的网页,视频,音乐,邮箱,游戏等等实时在线的信息时,它充当着核心角色。答:是各大厂商在全国/乃至世界各地部署的物理服务器映射出来的(可以抽象地理解为:一台服务器开了多台虚拟机,你购买便可使用其中一台虚拟机),可通过你的个人电脑终端远程登录到。答:既然服务器是电脑主机,那我们的个人PC可以搭建服务器吗?等搭建专属于个人的服务器,搭建了之后呢?,相当于你花钱购买了搭建服务器硬件的需求,这样就可以使用他们的。
2024-07-07 22:52:26 280
原创 基于arm-none-eabi-gcc编译工具链的串口重定向printf
VSCode基于arm-none-eabi-gcc交叉编译工具链的串口重定向printf输出和Keil MDK基于armcc工具链的串口重定向printf输出是不一样的,我按照以下链接①配置GCC的printf输出,以上解决了MCU—>电脑串口接收的问题,电脑串口—>MCU的发送问题还得需要拓展一下,可参考链接②。
2024-07-06 19:47:28 1022 1
原创 VSCode+arm-none-eabi-gcc交叉编译+Makefile构建+OpenOCD(基于STM32的HAL库)
相对路径好了,到这里就解决了报错未定义库函数的问题,其实这和keil的引入源文件和包含头文件路径的思路一样,只是以前习惯了keil的UI界面包含方式,换成Makefile方式包含,终究是有点不习惯,后面有时间还是好好学习一下Makefile的语法规则吧(立个flag!最后还是要重申一遍!!!!!注意,在Makefile中,源文件是引入到具体的.c文件,头文件是包含其相对路径。
2024-07-06 13:21:25 769
原创 ARMCC、ARMCLANG、arm-none-eabi-gcc这3个嵌入式交叉编译工具链有什么区别?
不可否认的是,arm-none-eabi-gcc编译器相比于keil的AC5、AC6编译器,所编译出的hex文件占用flash稍微大一点。细心的你应该发现了,打开keil uvision的“俄罗斯方块”—>Folders/Extensions,其实可以选择性地使用以上的工具链,如下图所示。② ARMCLANG同样是ARM公司开发的一套基于MDK的6代嵌入式工具链,是基于苹果公司LLVM框架的嵌入式工具链,可独立下载。的内容也会越来越多,这个时候,又有聪明的程序员大佬想到了,能不能自动生成。
2024-07-05 12:08:28 2660
原创 两款VSCode编码主题:Moonlight Night 和 Dracula Theme Official
“workbench.colorTheme” 是我们需要设置的Dracula主题。
2024-07-05 10:28:44 423
原创 (真实有效)解决使用VSCode打开STM32工程,头文件出现红色波浪线问题(基于Keil Assistant插件)
不要在KEIL UVISION PROJECT的工作区直接打开整个keil工程,使用vscode的文件夹方式打开xxxx.uvprojx所在的文件夹。
2024-07-04 00:10:34 2232 1
原创 同相放大器和反相放大器的区别
反相放大器输出的是负值,需要再用一个放大系数为1的反相放大器输出正值,你要问为什么?请看图。根据公式,同相放大器即便是R1为零,它的放大倍数也是1;反相放大器就不同了,放大倍数可以小于1,只不过是负的。假如R1/R2=10K/100K=-0.1倍,再用一个放大系数为1反相放大器就成了正0.1倍,楼主的需要就可以实现了。...
2021-11-15 09:46:30 9166
原创 运放选型注意事项
运放选型参数:1.压摆率2.输入失调电压:在差分放大器的两个输入端加有相等的输入电压时,差分输出电压称为输出失调电压。(输出端为0时,2个输入端之间的补偿电压,即差值或者2个输入端的电压相同时,输出端的电压),毫伏级信号放大选择uA级别失调电压运放3.失调电流4.驱运放选型参数:压摆率输入失调电压:在差分放大器的两个输入端加有相等的输入电压时,差分输出电压称为输出失调电压。(输出端为0时,2个输入端之间的补偿电压,即差值或者2个输入端的电压相同时,输出端的电压),毫伏级信号放大选择u
2021-11-15 00:43:23 1469
UsbDriverTool-2.1.exe,用于OpenOCD下替换J-Link驱动并恢复原来的J-Link驱动
2024-10-19
MinGW安装包:分离线免安装版和在线安装版,建议使用离线免安装版
2024-09-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人