- 博客(60)
- 收藏
- 关注
原创 Linux网络编程
网卡:网络适配器:标识的id,理论上这个id全球唯一,一般用来表示主机的id是标识的id,这个id是虚拟的,会改变IP地址分为子网id和主机id,子网id和主机id需要和子网掩码一起来看IP中被连续的1覆盖的位是子网id,被连续的0覆盖的位是主机id= 把主机位全写 0= 把主机位全写 1单播帧(目的 MAC = 本机 MAC)→ 网卡必须收。
2025-12-09 14:55:33
649
原创 Shell编程
setAction;funname#函数内部已经打印了结果,不需要再额外 echo/bin/bashs=$[$1+$2]echo $sread -p "请输入第一个整数:" aread -p "请输入第二个整数:" badd $a $b。
2025-09-02 11:28:13
1093
原创 Makefile的使用
目标名称是追踪监控的目标,而gcc命令的生成目标是所生成文件的名字,当追踪不到追踪监控的目标时会一直执行后续的gcc命令。防止目标名与同名文件冲突,并告诉 make“无论文件是否存在,每次都要执行”若不显式声明伪目标,当所在路径中有与伪目标同名的文件时,伪目标命令就不会执行。目标名称必须和gcc命令生成的目标文件同名,即。在报错后会显示(已忽略)
2025-08-28 22:21:10
354
原创 编程底层基础
然而,当你在这些窗口中输入变量名时,调试工具会根据符号表(Symbol Table)查找该变量的内存地址,并显示该地址的内容,而不受当前Memory窗口的地址范围限制。复位异常(Reset Exception)是所有异常类型里最特殊的一个,因为它不是从某个“原来的程序”中跳过去的,而是整个 CPU 重新启动,直接进入一个全新的执行流。:当程序停止在断点处时,CPU内核会停止执行,但外设仍然会继续运行,调试器主要控制CPU内核的运行状态,帮助开发者调试程序,通常不会直接控制外设的运行状态。
2025-08-28 15:33:28
1038
原创 Python虚拟环境中包存在,解析器路径正确,但就是找不到包解决方法
目录,也就是说 Python 根本没加载任何第三方库,自然找不到torch。被污染,或者 当前目录下有一个名为。99% 是 环境变量。
2025-07-24 14:30:49
290
原创 定时器详解
从模式中的复位模式会将计数器CNT清零,输入捕获模式下,会先将捕获到的计数值CNT写入捕获/比较寄存器CCR再复位(即CNT清零):存储预设的比较值,当定时器计数器 TIMx_CNT 的值等于 TIMx_CCR 的值时,触发输出比较事件。信号是一个周期性的方波信号,其周期(T)和频率(f)是固定的,但脉冲的宽度(t)可以根据需要进行调整。高电平有效表示当定时器的计数器(CNT)达到捕获/比较寄存器(CCR)的值时,输出信号将被设置为高电平。,并将捕获到的时间戳存储在捕获/比较寄存器(TIMx_CCR)中。
2025-07-21 10:39:57
1166
原创 系统复位详解
(Independent Watchdog,独立看门狗)是能产生系统复位信号的递减计数器,由独立的低速时钟LSI(RC振荡器)驱动,即使主系统时钟失效(在待机或停止模式下)也能工作,看门狗被激活后,当递减计数器计数到0x000时产生复位信号。(Window Watchdog)窗口看门狗是能产生系统复位信号和提前唤醒中断的递减计数器,由外部高速晶振(HSE)提供时钟源,所以在待机或停止模式下不能工作。:窗口期内重装载计数器的值,防止复位,非窗口期或窗口期下限之后喂狗会产生复位。是看门狗预分频系数;
2025-07-14 16:08:40
663
原创 数据通信详解
再使能复用功能的外设时钟,即可实现GPIO复用为该外设(即建立GPIO和该外设的连接<通过配置外设的模式可选择具体引脚的复用状态>),外设通过中断方式触发,需要开启中断,中断触发方式为一帧数据读取完毕;不同的通信协议有不同的中断触发机制,但它们的共同点是:只要硬件电路实现了协议标准,当满足特定条件时,就会触发中断进行相应外设的工作。:实际传输的数据,可选5、6、7、8、9个位长,LSB(低有效位)在前,MSB(高有效位)在后。:必须有,可选占0.5、1、1.5、2个位长,保持逻辑1电平,表示数据帧结束。
2025-07-10 11:52:51
974
原创 中断的使用详解
是“外部(扩展)中断/事件控制器”(External(Extended) Interrupt/Event Controller)主要用于处理外部信号的中断请求或事件触发,它不仅可以处理芯片外部的中断或事件,还可以处理芯片内部的某些信号。,允许系统在执行主程序时被外部事件(如外部中断,EXTI)或内部条件(如定时器中断、通信中断等)中断,从而执行特定的处理程序(中断服务函数,ISR)(Interrupt Vector Table,IVT)存储了所有中断服务函数的入口地址,处于一块特定的内存中。
2025-07-08 14:48:32
870
原创 GPIO详解
每个GPIO组(GPIOA)的寄存器是连续的,每个寄存器的不同位字段决定了该组中不同引脚(PA0,PA1)的配置。,访问速度非常快,而变量操作需要通过内存访问,速度较慢。在需要快速响应和低延迟的场景中,寄存器操作是首选。通过内部的P-MOS和N-MOS管的。可以由CMOS或TTL电路组成。
2025-07-06 17:03:11
993
原创 C++基础
C#/Java是虚拟机型的语言(托管语言),它们都没有头文件并行堆栈是一种调试工具,用于在多线程环境中可视化每个线程的调用堆栈。它允许开发人员在单一视图中查看所有线程的执行位置,从而更方便地调试多线程应用程序ImGUI(Immediate Mode Graphical User Interface)是一个轻量级的、跨平台的、与平台无关的C++图形用户界面库,特别适合于游戏开发和其他实时应用程序,允许开发者使用纯C++代码快速创建和管理用户界面基准测试是一种性能评估方法,通过标准化的测试用例和工具,可以客观
2025-06-27 14:37:29
865
原创 计算机二级(C语言)已过
在C语言中,类型转换需要谨慎处理,尤其是涉及指针、函数指针、结构体等复杂类型时。为了避免无效的类型转换,建议: 1. 明确类型转换的意图。2. 使用显式类型转换(如 `(type) `)来避免编译器警告。3. 确保转换后的类型与目标类型兼容。4. 避免可能导致未定义行为的类型转换,如将非法地址赋值给指针。如果不确定类型转换是否安全,可以查阅C语言标准或使用编译器的警告选项(如 ` - Wall`)来帮助发现潜在问题。printf()函数中,当格式转换说明符个数少于输出项个数时,多余的输出项不予输出。
2025-05-09 20:40:58
1204
原创 C51知识点
如果文件名不一致,只要在 .c 文件中正确包含对应的头文件,编译器仍然可以正常编译。在编程中,是否需要将库文件放在工程文件夹中,取决于你使用的开发环境和编译器的配置方式。)是库的接口定义文件,编译器在编译时需要这些文件来解析代码中的函数和变量声明。总之,是否需要将库文件放在工程文件夹中,取决于你的项目需求和开发环境的配置。文件),通常需要将这些文件放在工程文件夹中,并将其添加到项目中。一个函数不能既在主函数中又在中断函数中调用,会导致函数的重入。编程时要使用哪个库,就需要将哪个库放在工程文件夹中?
2025-03-23 15:52:34
474
1
原创 Sqlite3数据库
工具库的使用:程序编写时#include <库名.h>即可调用库中的函数 编译时链接工具库;注意:数据库中不区分字母大小写;SQLite 中的事务是数据库操作中非常重要的一个概念,它用于确保数据库操作的完整性和一致性。
2025-03-22 15:03:15
1225
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅