- 博客(36)
- 收藏
- 关注
原创 嵌入式中的指针和地址简单描述
3.指针的加法对应的储存的地址的变化,会自动根据类型uint32_t(即四个字节)自动偏移。&符号加变量名称,获得这个变量的所储存的数据的地址。这个变量也可以是指针变量。1. 指针变量本身也是一个变量,其储存的是一个地址,而这个值本身也有地址。fifo_reg_read + 1时等价于0x60001000+1*4。*符号加上指针变量名,即获得这个指针变量的储存的地址所指向的值。2. 将一个地址转换成指针,使用类型强转即可。
2025-12-29 21:25:05
33
原创 AGM FPGA AG10K 使用Supra新建Quartus工程开发教程
Select ve file:留空,这样子在Quartus工程里面绑定引脚即可,绑定后在Quartus编译(Start Compilation)后生效,不需要重新Migrate。然后在Quartus内找到Tools-> Tcl Script... 然后选择 af_quartus.tcl然后点击run,运行结束后,返回Supra,再一次点击Next.第三步,出现上图界面时,打开工程目录找到生成的Quartus工程,点击启动Quartus,然后先简单编写一个v代码。布线完成后会生成FPGA的烧录文件。
2025-12-24 15:50:13
280
原创 Verilog跨芯片平台的核心——sdc约束文件
Verilog本身是与具体硬件无关的时序/组合逻辑描述语言,但是不同芯片之间性能的差异导致了综合布线后的实际信号效果不一定如你所愿。这个时候就就需要约束文件了,约束文件会约束布线算法,确保芯片能够实现该IP的时序功能,如果不能则报错。如果没有约束文件,编译器也不知道你的外部信号时钟频率是多少,要怎么优化布线,编译器以为你是10Khz频率能运行,实际你是100Mhz,布线没约束,布线出来的结果不能满足你的实际频率,数据就不正常了。sdc约束文件是使用跨平台通用约束语法编写的一个文件。
2025-12-18 09:04:54
155
原创 SPI芯片选择(CS)引脚的深层作用:为什么必须直连MCU的GPIO?
一个常见的PCB设计准则是:SPI的芯片选择(CS)引脚必须直接连接到MCU的通用输入输出(GPIO)引脚,而不应通过任何缓冲器、开关或复杂逻辑间接控制。这一准则的根本原因深植于SPI从设备的芯片设计之中——CS引脚的首要功能是复位内部移位计数器,确保通信的精确同步与数据完整性。2. 同步复位:在从设备芯片内部,CS引脚直接连接到移位计数器的复位端。· CS由高变低(有效):计数器立即清零,状态机复位到初始状态,从设备准备接收第一个数据位。· CS由低变高(无效):通常表示帧结束,计数器停止,数据被锁存。
2025-12-11 12:15:37
482
原创 Quartus命令行烧录FPGA
c参数用于指定你使用的blaster,多个Blaster时双引号括住usb号, "USB-Blaster [USB-0]" .1.首先将quartus.exe所在目录添加进Path系统环境变量,这样子可以让你在其他路径下使用Quartus的相关命令。bpv选项则是 b(Blank-check)+p(编程)+v(校验). 生产时可只用p(编程),即"p;-o 烧录参数,格式: 烧录选项+分号+烧录文件(jtag可以用pof和jic).此外,jtagconfig.exe -n命令可查看blaster信息。
2025-12-05 06:07:32
183
原创 AGM32 /AG32 通过代码开启读保护
检测是否开启读保护,如果没有保护,则读出唯一ID,将其存在Flash中,下次直接通过flash直接寻址读取。(通过FLASH_GetUniqueID读取需要解锁flash,会触发读保护的擦写)
2025-12-05 00:45:45
218
原创 C语言的指针易混淆点
这个问题很容易出现在嵌入式开发里面的结构体身上,声明一个结构体指针,没有声明结构体本身,就对结构体本身进行引用赋值。声明一个指针,只会分配指针地址大小的内存,用来储存指针。这个时候你操作指针外的,未分配内存的数据程序会异常。程序正确,没有异常,因为指针的值通过int a去分配了内存。程序会异常,因为指针所指向的值,并没有被内存分配。
2025-11-30 02:56:35
122
原创 STM32嵌入式开发核心:volatile与寄存器操作详解
编译器默认会对变量进行优化(如缓存到寄存器 ),但硬件寄存器的值可能被硬件异步修改,加 volatile 可阻止编译器过度优化,确保每次都从内存(实际硬件寄存器映射的地址 )读取最新值。volatile 是 C/C++ 关键字,用于告诉编译器:被修饰的变量是 “易变的”,其值可能在程序未显式修改时发生变化(比如硬件寄存器值会被外设自动改变 )。示例:*(volatile int*)0x6000D204 ,通过指针操作硬件寄存器地址,volatile 保证每次访问都真实读写硬件,而非使用缓存值。
2025-11-21 09:21:40
379
原创 AGM32避坑指南
如果是时序电路,则看设计中门电路的复杂程度。如果跑100M的时钟,每个上升沿之间就是10纳 秒,在设计时,要保证10纳秒内对应的动作能全部执行完。简而言之,如果你的时序操作复杂,应该降低执行这个操作的时钟,确保他在一个边沿内能够处理完这个时序电路。复杂的时序操作VE应该声明BUSCLK 50,然后ip内使用sys_clock来处理复杂的时序操作。MCU部分貌似在使用直接寻址对CPLD的AHB进行操作时,如果编译选项build_flags没开-g或者开了-On优化,都会导致读写失败死机。
2025-11-21 02:46:39
325
原创 APM32 Freertos运行不起来
cube中启动了rtos后,只能设置stm32的优先级分组为NVIC_PRIORITYGROUP_4,而实际APM32的优先级分组为NVIC_PRIORITYGROUP_3,所以导致很多configASSERT检查失败,跳到了死循环里。但cube只要选了freertos后,优先级分组只能选NVIC_PRIORITYGROUP_4,不能改为NVIC_PRIORITYGROUP_3. 但似乎也没啥大影响,只是会对优先级进行截断,比如设置的优先级是5,实际是4,设置为11,实际是10。
2025-09-02 10:08:17
341
原创 QQ官方机器人获取头像API
https://thirdqq.qlogo.cn/qqapp/你的APPID/你的OpenID/640。
2025-03-26 03:45:28
656
2
原创 Nginx反向代理高并发情况下,源端口被用完的情况。
就相当于有了 Nx28232 个链接,同时nginx的反向代理将这些端口配置入upstream中即可。遇到这个问题,被代理的服务器的程序同时监听多个端口即可,例如80,81,82,83,84.....
2025-02-22 13:58:23
183
原创 网络四元组
一个源端口可以请求多个不同的目标 IP 地址;一个服务器端口监听,可以被多个不同的源端口访问。其核心原理在于 TCP/IP 协议中。综上,源端口的复用能力使得客户端可以高效地与多个目标 IP 通信,这是现代网络实现高并发的关键机制之一。客户端操作系统通过端口复用技术,允许同一源端口与多个目标 IP 通信。只要四元组中任意一个元素不同,连接即可独立存在。每个 TCP/UDP 连接由四元组唯一标识。
2025-02-22 13:10:05
277
原创 Nginx反向代理出现502 Bad Gateway问题的解决方案
这对于在同一个IP地址上托管多个HTTPS网站(虚拟主机)的情况尤其重要,因为服务器需要知道客户端请求的是哪个证书。以下是为什么有些HTTPS网站不配置SNI也能反向代理,而有些网站必须配置SNI才能反向代理的原因。在使用Nginx反向代理Https网站的时候,有些网站会出现502 Bad Gateway,这是由于Nginx没开启SNI导致的。加入以下配置即可开启Nginx的SNI服务,解决代理https网站出现502 Bad Gateway的情况。
2025-02-20 23:30:58
573
原创 Nodejs生成真随机数的简洁方法
现代Intel/AMD CPU 支持内置名为 RDRAND/RDSEED 的 TRNG(真随机数生成)指令。无需任何外部昂贵硬件,即可生成高质量随机数,通过采用物理热噪声源的方式。本 NPM 模块让您能在 Node.js 中调用这些指令,适用于模拟、分析、游戏等任何需要随机数的场景。安装。
2025-02-03 04:02:08
444
原创 Node.js多个 JavaScript 文件引用同一个 JS 文件时的情况
在 Node.js 中,多个文件引用同一个 JS 文件时,该文件的代码只会被执行一次。这是由于 Node.js 的模块缓存机制,确保了模块的单例模式,提高了性能和效率。因此,您可以放心地在多个文件中引用同一个模块,而不用担心代码被重复执行的问题。
2025-01-31 00:57:43
530
原创 嵌入式的Heap_Size参数
Heap_Size是一个宏或常量,用于指定在程序运行时为堆(heap)分配的内存大小。堆用于动态内存分配,例如使用malloccallocrealloc和free等函数时。在单片机中,这些函数申请内存时会从 堆(heap)中分配内存给变量,使用的是编译器或C标准库提供的内存管理。(单片机也可以使用第三方的内存管理malloccallocrealloc和free等函数的实,也会有类似Heap_Size的参数用来决定可动态分配内存的大小)在嵌入式系统中,Heap_Size。
2025-01-24 23:42:10
861
原创 Express服务器通过MQTT转发请求实现P2P处理请求
Express 服务器(公网服务器)接收来自客户端的HTTP请求。将请求数据通过MQTT发送到局域网服务器。等待来自局域网服务器的MQTT响应。将响应数据返回给客户端。局域网高性能服务器订阅特定的MQTT主题。处理来自公网服务器的请求。将处理结果通过MQTT发送回公网服务器。通过上述步骤,您可以实现一个Express服务器接收HTTP请求,并通过MQTT将请求转发到局域网服务器,等待响应后再返回给客户端。关键在于使用MQTT的模式,以及在Express中管理异步请求的回调和超时处理。
2025-01-18 19:53:21
986
原创 解决WCH552 USB-Blaster 导致蓝屏死机
我在某宝上买了一块USB-Blaster,插上电脑直接蓝屏死机重启,用的是WCH552G的方案。
2024-10-06 17:29:20
1974
9
原创 本地部署element-plus文档 本地快速浏览
下载后使用Nginx(其他也行)把文档文件夹(包含index.html的文件夹)当静态网站搭建起来即可。element-plus: 🎉 Vue 3 的桌面端组件库 - Gitee.com。国内镜像和官方网站在国内访问都会间歇性卡顿,所以搭建本地文档是为了更好查阅文档。可以直接打开链接下载压缩包,也可以用Git克隆下来。
2024-05-04 13:42:55
1158
原创 Linux修改LANG,默认英文,但是支持显示中文的方法
编辑 /etc/default/locale 文件 ,将LANG(告诉系统用什么符号集)设置为zh_CN.UTF-8,LANGUAGE(告诉软件用什么语言展示)设置为en_US:en即可。Linux有些软件的翻译一般,一般选择直接看英文,但是实际环境又有显示和编辑带有中文内容的需要。使用 dpkg-reconfigure locales命令安装中文集zh_CN.UTF-8。
2024-05-02 18:28:12
2252
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅