彻底解决Keil MDK调试STM32时Peripherals菜单空白、仅显示Core Peripherals问题
做STM32嵌入式开发的同学,大概率都踩过这个经典调试坑:进入Keil MDK的Debug调试模式后,点开顶部菜单栏的「Peripherals」,里面只有「Core Peripherals」(内核外设,如NVIC、SysTick),完全看不到GPIO、RCC、TIM、USART等STM32片上外设;同时「System Viewer」菜单也是空白的。 网上很多教程只说改Dialog DLL、重装DFP包,但很多人操作完依旧无效。本文从底层原理拆解问题根源,给出完整可复现的解决方案。 一、问题现象硬件连接正常、代码可正常下载烧录,进入调试模式后: Peripherals菜单仅显示System Viewer和Core Peripherals二级菜单,无任何芯片外设选项 System Viewer展开后为空,无法查看外设寄存器 内核寄存器(R0-R15、xPSR等)可正常显示,说明调试连接本身没问题 二、根本原因拆解1. 外设菜单的本质:依赖外设描述文件Keil的Peripherals图形化外设视图,本身不内置任何芯片的外设信息,它完全依赖外设描述文件来解析芯片有哪些外设、每个外设...
select/poll/epoll 底层执行原理详解
从底层的数据结构、设计思想、完整工作流程入手,介绍 Linux 上的三种 IO 多路复用模型。 select通过一个系统调用同时监控多个文件描述符(FD)的 IO 事件,实现单线程处理多连接的能力。 一、核心设计:用”位图”监控多个 FDselect 核心是通过 fd_set 位图结构管理需要监控的文件描述符,配合 select 系统调用让内核检查这些 fd 的状态。 关键数据结构:fd_set(文件描述符集合),fd_set 的第 3 位为 1,表示监控 FD=3 的事件。 二、代码和执行流程123456789101112131415161718192021222324252627282930313233343536373839404142int main() { // 1. 创建监听套接字(sockfd:服务器的"门口") int sockfd = socket(AF_INET, SOCK_STREAM, 0); bind(sockfd, ...); listen(sockfd, 10); // 2. 初...
虚拟机上网加速:通过宿主机代理让 Ubuntu Server 用上梯子
最近在 VMware 里装了个 Ubuntu Server 虚拟机跑开发环境,结果发现从 GitHub 拉代码简直龟速——git clone 只有 22 KiB/s,还时不时 Connection refused。但宿主机的 Windows 上开着梯子,浏览器访问 GitHub 秒开。于是研究了一下怎么让虚拟机共享宿主机的”加速通道”,过程比想象中简单,记录一下供大家参考。 为什么要这样折腾?虚拟机网络通常通过 NAT 或桥接模式上网。如果宿主机直连 GitHub 本身很快,那虚拟机也不会有问题;但实际情况往往是宿主机也要依赖代理才能流畅访问外网,而虚拟机默认并不会自动继承这个代理。 核心思路:在宿主机上把代理共享出来,让虚拟机里的流量指向宿主机 IP 的代理端口。所有请求先走到宿主机,再由宿主机的梯子转发出去,从而绕过虚拟机的网络限制。 准备工作:让宿主机代理”对外营业”无论你用 Clash、v2rayN、Shadowsocks 还是其他工具,都需要打开 Allow LAN(允许局域网连接) 功能,并记下代理端口。 Clash:默认 HTTP/SOCK...
VMware Ubuntu Server 搭建 Samba 共享文件夹,Windows 与虚拟机双向互传文件
前言日常使用 VMware 运行 Ubuntu Server 时,经常需要在 Windows 宿主机和虚拟机之间传输代码、配置文件、安装包。VMware 自带的 /mnt/hgfs 共享虽然简单,但存在大文件读写卡顿、Linux 文件权限丢失、稳定性差等问题。Samba 基于局域网文件共享协议,速度稳定、权限可控,适合长期开发和运维场景使用。本文完整记录从零配置 Samba 的全部步骤与排错方案。 两种文件共享方案对比 方案 优点 缺点 适用场景 VMware hgfs 共享 配置极简,一键开启 大文件 IO 速度慢、Linux 权限失效、偶尔挂载丢失 临时传输少量小文件 Samba 局域网共享 传输速度稳定、读写权限自定义、Windows 原生网络访问 需要手动配置服务与账号 长期开发、大量文件互传、项目代码同步 本文重点讲解推荐方案:Samba 局域网文件共享。 一、安装 Samba 服务1. 更新软件源并安装12sudo apt updatesudo apt install samba samba-common-bin -y 二、创建共享目录并配置权限1...
我的第一篇博客
Hello World这是我的第一篇博客文章,使用 Hexo + Butterfly 主题 搭建,托管在 GitHub Pages 上。 为什么选择 Hexo? Markdown 写作,简单高效 一条命令生成静态页面 丰富的主题和插件生态 免费托管在 GitHub Pages 接下来的计划写点自己想写的东西。 1hexo new "文章标题" 种一棵树最好的时间是十年前,其次是现在。