Power's Wiki -

HAL 库开发笔记 - USB 通信 🚧

本篇基于自研 RobotCtrl 开发套件,单片机内核为 STM32F407ZET6,USB_Slave 引脚为 PA11 和 PA12,原理图及详细介绍请见 RobotCtrl - STM32 通用开发套件。 回环测试简单步骤 CubeMX 内配置 配置为外部高速时钟(HSE)。 配置时钟树,确保时钟树末端 48MHz Clocks (MHz) 为 48MHz。 在 USB_OTG_FS 页面,将 Mode 配置为 Device_Only,默认引脚是 PA11 和 PA12。 在 USB_DEVICE 页面,将 Class For FS IP 配置为 Commmunication Device Class (Virtual Port Com)。 代码内配置 实现数据回环功能,只需要在 usbd_cdc_if.c 文件的 CDC_Receive_FS 函数内添加一行: c title="usbd_cdc_if.c" CDC_Transmit_FS(Buf,*Len); // 返回相同数据 测试 打开设备管理器查看设备是否已经显示,如果没有发现设备,或有黄色的感叹号,请到 ST 官网下载驱动 STM32 Virtual COM Port Driver。 如果安装了驱动还是未能正常识别,可尝试在 CubeMX - Project Manager - Project - Linker Settings,将 Minimum Heap Size 调整为 0x600 或更高。 打开串口工具(波特率任意),可发现发送任意字符,将返回相同字符。 参考与致谢 STM32 使用 CubeMX HAL 库快速生成 USBVCP 虚拟串口工程 原文地址:https://wiki-power.com/ 本篇文章受 CC BY-NC-SA 4.0 协议保护,转载请注明出处。

AI生成摘要 本文介绍了使用HAL库开发USB通信的方法。通过配置CubeMX和代码内配置,可以实现数据回环功能。测试时需要检查设备是否显示,并安装驱动。如果无法正常识别,可以尝试调整最小堆大小。通过打开串口工具,可以发送任意字符并返回相同字符。

相关推荐 去reddit讨论

Power's Wiki -

Homelab - 自托管密码管理器 Vaultwarden

Vaultwarden 是一个第三方自托管的 Bitwarden 服务器,通过一个主密码保护并管理各个网站的密码,可生成随机的密码供不同网站使用。 部署(Docker Compose) 首先创建 compose.yaml 文件,并粘贴以下内容: yaml title="compose.yaml" version: "3" services: vaultwarden: container_name: ${STACK_NAME}_app image: vaultwarden/server:${APP_VERSION} ports: - ${APP_PORT}:80 volumes: - ${STACK_DIR}:/data/ restart: always (可选)推荐在 compose.yaml 同级目录下创建 .env 文件,并自定义你的环境变量。如果不想使用环境变量的方式,也可以直接在 compose.yaml 内自定义你的参数(比如把 ${STACK_NAME} 替换为 vaultwarden)。 ```dotenv title=".env" STACK_NAME=vaultwarden STACK_DIR=xxx # 自定义项目储存路径,例如 ./vaultwarden vaultwarden APP_VERSION=latest APP_PORT=xxxx # 自定义访问端口,选择不被占用的即可 ``` 最后,在 compose.yaml 同级目录下执行 docker compose up -d 命令即可启动编排的容器。 配置说明 Vaultwarden 默认需要使用 https 登录,推荐通过反向代理使用(反向代理服务器的搭建可参考文章 Homelab - 反代证书管理面板 Nginx Proxy Manager。 使用浏览器扩展、桌面与移动端 App 时,需要在登录页面点击设置,并配置服务器的 URL,才能正常使用自托管的服务。 另外,旧版本(低于 1.27.0)的 Vaultwarden 与 Bitwarden 的浏览器拓展不兼容,会导致无法登录。详见 issue:Client fails to connect or login。 因为是自托管的服务,所以需要自己留意数据安全。记得定期备份密码数据库。 参考与致谢 官网 文档 GitHub repo Docker Hub 原文地址:https://wiki-power.com/ 本篇文章受 CC BY-NC-SA 4.0 协议保护,转载请注明出处。

AI生成摘要 Vaultwarden是一个第三方自托管的Bitwarden服务器,用于保护和管理各个网站的密码。可以通过Docker Compose部署,并配置环境变量。需要使用https登录,并通过反向代理使用。使用浏览器扩展、桌面和移动端App时,需要配置服务器的URL。旧版本与Bitwarden的浏览器拓展不兼容。需要注意数据安全并定期备份密码数据库。

相关推荐 去reddit讨论

Power's Wiki -

Git 配置代理

问题来源 国内 git clone 与 git pull 速度太慢。 解决方法 1. 代理软件内设置 在代理软件内勾选 允许来自局域网的连接 记下端口号(例如:1080) 开启 全局模式 2. 给 Git 全局配置 http 代理 ```shell git config --global http.proxy http://127.0.0.1:【端口号】 git config --global https.proxy https://127.0.0.1:【端口号】 例如: git config --global http.proxy http://127.0.0.1:10808 git config --global https.proxy https://127.0.0.1:10808 如果上面的不生效,则试试走 socks5 端口: git config --global http.proxy socks5://127.0.0.1:【端口号】 git config --global https.proxy socks5://127.0.0.1:【端口号】 如果只对 GitHub 进行代理,对国内的仓库不影响(不熟悉配置文件不建议使用): git config --global http.https://github.com.proxy https://127.0.0.1:【端口号】 git config --global https.https://github.com.proxy https://127.0.0.1:【端口号】 只对 GitLab 进行代理,对国内的仓库不影响(不熟悉配置文件不建议使用): git config --global https.https://https://gitlab.com.proxy https://127.0.0.1:1080 ``` Ubuntu 下配置: shell git config --global http.https://github.com.proxy socks5://127.0.0.1:10808 查看配置文件的路径 git config –list –show-origin 恢复 如果不想用代理,可以用以下的方法恢复: shell git config --global --unset http.proxy git config --global --unset https.proxy 参考与致谢 征服 git clone 与 git pull 的龟速提交 原文地址:https://wiki-power.com/ 本篇文章受 CC BY-NC-SA 4.0 协议保护,转载请注明出处。

AI生成摘要 本文介绍了在代理服务器上配置 socks5 端口的方法,并提供了只对 GitHub 或 GitLab 进行代理的配置选项。建议熟悉配置文件的用户使用。

相关推荐 去reddit讨论

Power's Wiki -

HAL 库开发笔记 - CAN 通信 🚧

本篇基于自研 RobotCtrl 开发套件,单片机内核为 STM32F407ZET6,CAN 通信使用 TJA1050 芯片,原理图及详细介绍请见 RobotCtrl - STM32 通用开发套件。 回环测试简单步骤 CubeMX 内配置 根据所用的 CAN 硬件,在左侧栏点开 CAN1 或 CAN2 页面,勾选 Activated,在参数页面,配置这些参数: 将 Prescaler (for Time Quantum) 设置为 6,Time Quanta in Bit Segment 1 和 Time Quanta in Bit Segment 2 都设置为 3 Times,这个组合将比特率设置为 1Mbps(最高)。 将 ReSynchronization Jump Width 配置为 1 Time ,这是重新同步时可调整的最大步长。 将 Operating Mode 配置为 Loopback,用于回环测试。 在 NVIC Settings 标签页,开启 CANx RX0 interrupts。 代码内配置 在项目下创建 can.c,设置筛选器,这里配置的是列表模式,筛选了拓展 ID 0x2233 和标准 ID 0: ```c title="can.c"/ * 函数名:CAN_Filter_Config * 描述 :CAN的过滤器 配置 * 输入 :无 * 输出 : 无 * 调用 :内部调用 / static void CAN_Filter_Config(void) { CAN_FilterTypeDef CAN_FilterTypeDef; /*CAN筛选器初始化*/ CAN_FilterTypeDef.FilterBank = 0; //筛选器组0 CAN_FilterTypeDef.FilterMode = CAN_FILTERMODE_IDLIST; //工作在列表模式 CAN_FilterTypeDef.FilterScale = CAN_FILTERSCALE_32BIT; //筛选器位宽为单个32位。 /* 使能筛选器,按照标志的内容进行比对筛选,扩展ID不是如下的就抛弃掉,是的话,会存入FIFO0。 */ CAN_FilterTypeDef.FilterIdHigh = ((((uint32_t) 0x2233 << 3) | CAN_ID_EXT | CAN_RTR_DATA) & 0xFFFF0000) >> 16; //要筛选的ID高位 CAN_FilterTypeDef.FilterIdLow = (((uint32_t) 0x2233 << 3) | CAN_ID_EXT | CAN_RTR_DATA) & 0xFFFF; //要筛选的ID低位 CAN_FilterTypeDef.FilterMaskIdHigh = 0; //第二个ID的高位 CAN_FilterTypeDef.FilterMaskIdLow = 0; //第二个ID的低位 CAN_FilterTypeDef.FilterFIFOAssignment = CAN_FILTER_FIFO0; //筛选器被关联到FIFO0 CAN_FilterTypeDef.FilterActivation = ENABLE; //使能筛选器 HAL_CAN_ConfigFilter(&hcan1, &CAN_FilterTypeDef); } ``` 测试 打开设备管理器查看设备是否已经显示,如果没有发现设备,或有黄色的感叹号,请到 ST 官网下载驱动 STM32 Virtual COM Port Driver。 如果安装了驱动还是未能正常识别,可尝试在 CubeMX - Project Manager - Project - Linker Settings,将 Minimum Heap Size 调整为 0x600 或更高。 打开串口工具(波特率任意),可发现发送任意字符,将返回相同字符。 参考与致谢 STM32CubeMX 与 HAL 库学习--简单的 CAN 回环测试 原文地址:https://wiki-power.com/ 本篇文章受 CC BY-NC-SA 4.0 协议保护,转载请注明出处。

AI生成摘要 本文介绍了使用HAL库进行CAN通信的开发笔记。文章首先介绍了回环测试的简单步骤,包括CubeMX内配置和代码内配置。然后详细介绍了在代码内配置中设置筛选器的方法。最后提供了测试方法,包括查看设备是否显示和使用串口工具发送和接收字符。

相关推荐 去reddit讨论

Power's Wiki -

GitHub 改 Host

问题 错误:curl: (7) Failed to connect to raw.githubusercontent.com port 443: Connection refused 原因 国内 DNS 污染。 解决 在本机的 host 文件中添加: 199.232.68.133 raw.githubusercontent.com 199.232.68.133 user-images.githubusercontent.com 199.232.68.133 avatars2.githubusercontent.com 199.232.68.133 avatars1.githubusercontent.com Host 路径: Windows: C:\Windows\System32\drivers\etc Linux: /etc/hosts 补一点 Linux 下的操作方法: 打开终端 输入命令:vi /etc/hosts 按 A 切换到编辑模式 在末尾添加上面的几句 Host 指向 按 Esc 退出编辑,按 :wq 保存并退出 拓展 查询域名的 IP 使用 IPAddress 参考与致谢 添加 Host 加速访问 github 文章作者:Power Lin 原文地址:https://wiki-power.com 版权声明:文章采用 CC BY-NC-SA 4.0 协议,转载请注明出处。

AI生成摘要 GitHub改Host问题是由于国内DNS污染导致的。解决方法是在本机的host文件中添加相应的IP地址。Windows路径为C:\Windows\System32\drivers\etc,Linux路径为/etc/hosts。在Linux下的操作方法是打开终端,输入命令vi /etc/hosts,按A切换到编辑模式,添加相应的Host指向,按Esc退出编辑,按:wq保存并退出。拓展内容包括使用IPAddress查询域名的IP。

相关推荐 去reddit讨论

Power's Wiki -

Homelab - 网站 favicon 抓取工具 iconserver

iconserver 是一个网站 favicon 图标抓取工具。支持抓取 favicon.ico 与 apple-touch-icon.png,拥有简单的 URL API 与 web 操作页面,如果抓取失败则会生成首字母开头的 favicon。 部署(docker-compose) 首先创建 compose.yaml 文件,并粘贴以下内容: yaml title="compose.yaml" version: "3" services: iconserver: container_name: ${STACK_NAME}_app image: matthiasluedtke/iconserver:${APP_VERSION} ports: - ${APP_PORT}:8080 restart: always (可选)推荐在 compose.yaml 同级目录下创建 .env 文件,并自定义你的环境变量。如果不想使用环境变量的方式,也可以直接在 compose.yaml 内自定义你的参数(比如把 ${STACK_NAME} 替换为 iconserver)。 ```dotenv title=".env" STACK_NAME=iconserver iconserver APP_VERSION=latest APP_PORT=xxxx # 自定义访问端口,选择不被占用的即可 ``` 最后,在 compose.yaml 同级目录下执行 docker compose up -d 命令即可启动编排的容器。 参考与致谢 文档 GitHub repo Docker Hub Demo site 原文地址:https://wiki-power.com/ 本篇文章受 CC BY-NC-SA 4.0 协议保护,转载请注明出处。

AI生成摘要 iconserver是一个网站favicon图标抓取工具,支持抓取favicon.ico和apple-touch-icon.png。可以通过URL API和web操作页面进行操作。部署时需要创建compose.yaml文件,并粘贴相关内容。可以选择在同级目录下创建.env文件来自定义环境变量。最后,执行docker compose up -d命令启动容器。

相关推荐 去reddit讨论

Power's Wiki -

Flip - 基于全志 F1C200s 的 Linux 开发板

项目仓库:linyuxuanlin/Flip 项目在线预览 : F1C100s/F1C200s 基于 ARM9 CPU 架构,封装相同,区别仅仅是 F1C100S 内置 32MB DDR1 内存,而 F1C200S 为 64MB。 除此之外,这个芯片还集成了 USB OTG、UART、SPI、TWI、TP、SD/MMC、CSI 等通用外设。 基本参数 F1C200s 的基本参数如下: ARM9 CPU architecture 400M Memory SIP 64MB DDR1 SD2.0, eMMC 4.41 Video H.264/MPEG1 1920x1080@30fps decoding,MJPEG 1280x720@30fps encoding Audio, 2xDAC 和 1xADC, DAC up to 192kHz,ADC up to 48kHz 1 x I2S/PCM interface Display RGB interface up to 1280x720@60fps TV CVBS output, support NTSC/PAL USB OTG SDIO IR 3 x TWI 2 x SPI 3 x UART Melis or Linux SDK OS Package QFN88, 10mm x 10mm F1C200s 的系统架构框图: 典型应用示意图: Pin 定义: 参考与致谢 【目录】全志 F1C100S/F1C200S 学习笔记 peng-zhihui/Planck-Pi 小白自制 Linux 开发板 一. 瞎抄原理图与乱画 PCB MangoPi 原文地址:https://wiki-power.com/ 本篇文章受 CC BY-NC-SA 4.0 协议保护,转载请注明出处。 各模块的设计

AI生成摘要 Flip是一款基于全志F1C200s芯片的Linux开发板,具有ARM9 CPU架构和64MB DDR1内存。该芯片还集成了USB OTG、UART、SPI、TWI、TP、SD/MMC、CSI等通用外设。它支持视频解码和编码,音频输出和输入,以及多种接口和输出选项。Flip的系统架构框图和典型应用示意图也提供了参考。

相关推荐 去reddit讨论

Power's Wiki -

ESXi 初始化指南

VMware ESXi 是一个可裸机安装的虚拟机管理器。本篇教程基于 ESXi 8,仍在草稿阶段。 可以先跟着这篇教程上手:『软路由踩坑指南』 篇二:ESXi 8.0 虚拟机必备知识与保姆级安装过程 进行至 5.修改ESXI的默认空间 这个地方时,改用以下方法,修改 ESXI 的默认空间大小。 减小 VMFSL 的占用 在点安装系统后 5 秒内,按 Shift + O,输入 cdromBoot runweasel systemMediaSize=min, 将虚拟内存配置到最小值。具体可参考官方文档 ESXi System Storage Overview。 Windows 11 虚拟机的安装 Win11 对系统配置比较严苛,安装的时候可能会出现 这台电脑无法运行Windows 11。一般问题来自于 TPM 检查,可以通过以下的方法避开: 在虚拟机的初始化页面,启用 Windows 基于虚拟化的安全性。 在进入 Windows 虚拟机后的 现在安装 页面,按快捷键 Shift + F10 启动 cmd 窗口(如果调出 cmd 界面,有可能是笔记本的键盘键位问题,可以尝试外接一个键盘)。 输入 regedit,打开注册表。在 HKEY_LOCAL_MACHINE\SYSTEM\Setup 路径下,创建两个 32 位的 DWORD 值: BypassTPMCheck,数值为 16 进制 1。 BypassSecureBootCheck,数值为 16 进制 1。 如果仍然无法安装,可以尝试检查其他的条件。可能是有一些条件达不到要求,比如 1GHz 以上的主频、64GB 以上的磁盘空间、4G 以上的内存。具体可参考 System requirements。

AI生成摘要 本文介绍了ESXi虚拟机管理器的初始化指南和Windows 11虚拟机的安装方法。在ESXi初始化过程中,可以通过修改默认空间大小来减小占用。在安装Windows 11虚拟机时,可能会遇到TPM检查问题,可以通过启用虚拟化安全性和在注册表中创建两个DWORD值来避开。如果仍然无法安装,可以检查其他条件是否满足要求。

相关推荐 去reddit讨论

Power's Wiki -

Doxygen 注释规范

文件头标注展开目录 ```c /************ * Copyright (C) 2018 by Doxygen C Comment * * * * This file is part of Box. * * * * Box is free software: you can redistribute it and/or modify it * * under the terms of the GNU Lesser General Public License as published * * by the Free Software Foundation, either version 3 of the License, or * * (at your option) any later version. * * * * Box is distributed in the hope that it will be useful, * * but WITHOUT ANY WARRANTY; without even the implied warranty of * * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * * GNU Lesser General Public License for more details. * * * * You should have received a copy of the GNU Lesser General Public * * License along with Box. If not, see http://www.gnu.org/licenses/. * **************/ /* * @file doxygen_c.h * @author someone * @date 2018.1.4 * @brief doxygen 规范的 C 文件注释规范文档,可以换行, * 所有 brief 同 * * @details 对该文档的详细说明和解释,可以换行, * 所有详细说明同 / include "hearder.h" ``` 结构体、枚举类型标注展开目录 c /** * @brief 简要说明 * * @details 详细说明 */ typedef enum BoxEnum_enum { BOXENUM_FIRST, /**< Some documentation for first. */ BOXENUM_SECOND, /**< Some documentation for second. */ BOXENUM_ETC /**< Etc. */ } BoxEnum; 函数头注释展开目录 c /** * @brief 函数简要说明,可以换行 * * @details 对函数的详细说明和解释,可以换行 * * @note 注意事项内容 * * @param index 说明文字 * @param cent 说明文字 * * @return 描述函数返回的内容 * @retval 1 测试成功 * @retval -1 测试失败 */ bool Test(int index, char *cent); 变量注释展开目录 c int element = 0; /**< 变量简单说明 */ /** * @brief 变量简要说明 * * @details 变量详细说明 */ unsigned int variable = 0; 宏注释展开目录 ```c /* * @brief 宏简要说明 * * @details 宏详细说明 / define variable 10 ``` 参考与致谢 基于 Doxygen 的 C 语言简要注释规范

AI生成摘要 这篇文章是关于Doxygen C Comment的规范文档,它是Box软件的一部分。文章提供了关于如何编写C文件注释的规范和详细说明。

相关推荐 去reddit讨论

Power's Wiki -

EMC 设计指南

电磁兼容性(Electromagnetic Compatibility, EMC)指的是设备在其电磁环境中能正常工作且不对环境中任何事物构成不能承受的电磁骚扰的能力,通俗地说,就是你的板子不怕别人干扰,也尽量不去干扰别人,达到「兼容」的状态。 电磁兼容性(EMC) 包括了 电磁干扰(EMI,Electro-Magnetic Interference) 和 电磁耐受性(EMS,Electro-Magnetic Susceptibility)。 EMI 有以下要素: 辐射发射(RE,Radiated Emission):指干扰源通过空间把其信号耦合(干扰)到另一个电网络。 传导发射(CE,Conducted Emission):指通过导电介质把一个电网络上的信号耦合(干扰)到另一个电网络。 谐波(Harmonic):谐波电流骚扰测试。 闪烁(Flicker):电压变化和闪烁测试。 EMS 有以下要素: 辐射抗扰(RS):射频电磁场辐射抗扰度测试。 传导抗扰(CS):射频场感应的传导骚扰抗扰度测试(大电流注入)。 防静电(ESD):静电抗扰度测试(静电放电实验)。 瞬态脉冲干扰(EFT):电快速瞬变脉冲群抗扰度测试。 电压暂降(DIP):短时中断和电压变化抗扰度测试。 浪涌、雷击(SURGE):浪涌(雷击)抗扰度测试。 工频磁场抗扰(PFMF):工频磁场抗扰度测试。 EMC 优化基本方法 产生 EMC 问题的要素是:电磁干扰源、耦合途径、敏感设备。 规律: 高频电流环路面积 S 越大, EMI 辐射越严重。 环路电流频率 f 越高,引起的 EMI 辐射越严重,电磁辐射场强随电流频率 f 的平方成正比增大。 基本应对方法: 传输通道抑制:具体的方法有滤波、屏蔽、接地、搭接、合理的布线; 空间分离:即通过加大骚扰源和敏感电路间的距离,抑制空间辐射骚扰和感应耦合骚扰的有效方法; 时间分离:有用信号在干扰信号发射时短暂关闭,而在干扰信号停止的时间内传输; 频谱处理:频谱改变、展频技术; 电气隔离:光电隔离、继电器隔离、变压器隔离、DC/DC 变换。 最小化高频线和电源环路的面积 基本原则: 信号总是返回到源端。 信号回流总是走阻抗最小的路径。 在高频信号中,信号回流路径通常是最小电感的路径,这通常也是环路面积最小的路径。在低频中(通常为 KHz 频率及以下),信号回流往往走阻值最小的路径。 尽量保持信号回流屏幕完整 如图,如果切割了信号回流平面,则信号电流将不能经最优化(最短)路径返回源头,在寻找替代回流路径的时候将变得不可预期,增大信号环路面积。 特殊情况下,数字地和模拟地需要隔离,防止串扰。 高速信号远离连接器 通过连接器连接到 PCB 的线缆是高效的天线,而高速信号容易产生电位差,这些电压会驱动电流到连接的线缆上,引发辐射超标。 抑制高速信号上升沿和下降沿时间 通过减慢数字信号的上升沿和下降沿时间,可以很好地控制高次谐波频率。过长的转换时间会导致信号完整性和过热问题。 EMC 元器件 EMC 常用元件有共模电感、磁珠与滤波电容器。 常见滤波器模型: 共模电感 共模电感的等效模型: 磁珠 磁珠的介绍与选型请见 基本元器件-电感与磁珠 · 磁珠 部分。 滤波电容 电容的介绍与选型请见 基本元器件 - 电容 部分。 PCB 的 EMC 设计 🚧 3W 与 20H 原则 3W 原则指的是线中心距不少于 3 倍线宽时,则可保持 70%的线间电场不互相干扰。如要达到 98% 的电场不互相干扰,则使用 10W 规则。 20H 原则指的是确保电源平面的边缘要比地平面边缘至少缩入相当于两个平面间层距的 20 倍,是为抑制边缘辐射效应,可以将 70% 的电场限制在接地边沿内;内缩 100H 则可以将 98% 的电场限制在内。 参考与致谢 电磁兼容介绍 电磁兼容(EMC):简单粗暴的 EMC 设计指南 EMI/EMC 设计秘籍–电子产品设计工程师必备手册 利用混成式共模电感抑制传导电磁干扰 [电路]EMC 基础概念_共模差模干扰 原文地址:https://wiki-power.com/ 本篇文章受 CC BY-NC-SA 4.0 协议保护,转载请注明出处。

AI生成摘要 电磁兼容性(EMC)是设备在电磁环境中正常工作且不对环境构成电磁骚扰的能力。EMC包括电磁干扰(EMI)和电磁耐受性(EMS)。EMI包括辐射发射、传导发射、谐波和闪烁。EMS包括辐射抗扰、传导抗扰、防静电、瞬态脉冲干扰、电压暂降、浪涌和工频磁场抗扰。EMC优化方法包括传输通道抑制、空间分离、时间分离、频谱处理和电气隔离。最小化高频线和电源环路的面积,保持信号回流屏幕完整,远离连接器,抑制高速信号上升沿和下降沿时间,使用共模电感、磁珠和滤波电容器等EMC元器件。PCB的EMC设计原则包括3W和20H原则。

相关推荐 去reddit讨论