- 博客(65)
- 收藏
- 关注
原创 stm32 2.0.3.0
为什么需要使用pwm2模式这是以为如果有两个mos管的话,他们不能同时导通,就会需要这样的结构。值先进入影子寄存器,之后才会更新到活动寄存器。这里选择打开不然就没法更新CCR的值了。保险起见选择打开ENABLE。
2025-03-20 21:59:32
248
原创 stm32 2.0.2
在串口读取数据是有两级缓冲,理想情况是每接受到一个数据就把他读出来,但是没来得及读就会造成数据丢失。要对串口进行一个判断,这是一个约定俗称的写法。在右下角的Watch里面写上要监视的变量。这能直接改对应的值,效果会显示在单片机上。这两个地方的设置是一样的。右键点击转换为十进制数。SPI总线的五个参数。解决不定长数据的方法。
2025-03-20 18:22:31
235
原创 stm32 2.0.1
Data Direction 数据传输方向:Transmit-Only 只发送 | Receive-Only 只接受 | Receive and Transmit收发双向(一般选择收发双向)将地址换算成二进制数据之后去掉最后一位,之后主机释放SDA线等待从机应答,从机通过把SDA拉低来释放一个应答信号(ACK)发送端高电位说明串口是空闲状态,当变为低电位的时候开始发送数据,在最后停止位会把电压拉高,一般采用1位的停止位。当数据位中包含奇数个1的时候校验位就写的是1,偶数个就写0。
2025-03-20 15:37:08
525
原创 stm32 2.0.0
接入上拉电阻之后,就不会读取外部的信号,因为下面的这个电阻相当于无穷大,分到了全部的电压,所以图中的点的电压就是Vdd,I/O引脚上会出现一个稳定的高电压。过快的上升沿和下降沿会增加芯片的功耗,同时会使数字信号的带宽增加,从而对电路上其他的电子元器件产生电子干扰。彩色的引脚是由特殊功能的引脚,用户无法通过编程去控制,灰色的是普通的I/O口。进行一个程序的下载,下载完之后就相当于是之前的程序已经被清空了。NRST是芯片的复位接口,接一个按钮来进行芯片的复位。电压的切换并不是直接就能切换的,需要切换时间。
2025-03-18 19:49:23
483
原创 正式进入linux 1.0
bin 二进制目录 GNU的一些工具,使用的一些命令都在bin里面,相当于直接程序就写好了,直接用就行(包括系统的一些自带的命令),存放许多用户级的,是一些系统级的命令。/root 相当于管理员目录,一般不要去搞他,需要管理员身份去访问,就像是windows中的以管理员身份运行,他的权限是修改电脑的所有文件 前缀是sudo。后面还有/usr/bin这是你自己写的命令,比如自己安装的软件,所以寻找你安装的软件的时候就要去/usr/bin里面去找,而不是/bin里面去找。/srv 服务目录。
2025-03-14 22:30:37
694
1
原创 Linux 铺垫
unix上具有的一些软件,linux内核内有,所有GNU他们模仿unix, 为linux写了一些必要的软件。在linux有两种方法,一种是通过GUI(图标界面),一种是通过GUN(命令行)1.命令行界面(CLI)-------->专业的人玩什么?其中的type就是各种各样的文件类型,不同的分区有不同的格式。GNU是一个自由的操作系统,开发各种的软件,画图啊什么的。IT术语并不遵循通常的英语音标,更多的是遵顼专业的术语。GNU ---->是一个组织,专门写软件。4.Application 应用 App。
2025-03-12 14:36:30
343
原创 java 下
Animal作为抽象类(相当于一个共性的集合),平时使用的几乎都是他的继承,不会去专门创建一个Animal类,同时在继承的时候,有可能会忘了重写某一方法,导致直接沿用了Animal中的方法。当一个类里面,所有的方法都是抽象方法是,我们就不用abstract class的方法了,而是使用接口。问题是不同的动物,叫声不同,所以此时Animal中的动物叫就无法完成任务,所以需要方法的重写。相当于是用new了一个子类,但是顶着父类的名字,所以会向上转型,用父类的东西。在需要重写的类中使用ali + insert。
2025-03-04 09:23:10
333
原创 二级指针解引错误
这里传入的是char*一级指针,但是在后续强制类型转换的时候是对二级指针解引,因为我们传入的是一级指针,并没有告诉二级指针的位置,所以强制转化为二级指针然后再解引会指向一片未知的内存空间。正确的写法时强制转化成一级指针。
2025-02-13 20:14:20
126
原创 Java 上
包是就是一个文件,com是域名 company是公司名 后面跟着就是包的用途。也可以直接执行java文件,这时不会生成class文件,而是放到了内存里。Java生成的是class文件(字节码文件)可以跨平台使用。在终端中使用javac是进行编译这时会产生class文件。将自己的java文件分享给别人时分享的是class。在使用java xxx(文件名), 这时是运行程序。**/****输入这个,然后电机回车会自动生成注释。程序的命名和文件的命名时一样的。是运行在一个小的虚拟机上。
2025-02-11 21:52:51
610
原创 仓库管理小程序
在这个示例中,name 字符串 “ThisIsALongName” 的长度超过了 MAX_NAME(10),由于使用了 _TRUNCATE 模式,strncpy_s 会将其截断,只复制前 9 个字符(因为要预留一个位置给 ‘\0’),最终 inventory[0].name 中存储的是 “ThisIsALo”。来源于micro_frank。
2025-02-10 17:40:55
182
原创 指针数组和数组指针
指针数组是一个数组,数组中的每个元素都是指针。也就是说,它是一组存储指针的集合。数组指针是一个指针,它指向一个数组。也就是说,它存储的是整个数组的地址。指针数组:是一个数组,数组元素是指针,主要用于存储多个指针。数组指针:是一个指针,指向一个数组,常用于处理二维数组等情况。
2025-02-09 16:01:39
209
原创 命令行参数
调用power shell中运行的东西是一个软件,后面的-f -0等等都是参数生成.exe文件生成 -> 重新生成解决方案生成 -> 重新编译需要写start xxxx.exe得用win + R打开cmd才能实现,还需要把exe文件放到对应的用户 -> 用户名文件夹第一个参数是文件位置后面的参数是输入的参数,不需要-xxx,用空格隔开就行atoi是 C 标准库中的一个函数,用于将字符串转换为整数。
2025-02-08 13:23:01
306
原创 VMware Workstation虚拟机
快照:可以回到之前的状态,对某个事件段的状态进行一个保存。没必要关机,选择挂起就行(不占内存),就像视频播放一样。3.和真实的计算机毫不相干,随意性。ctrl + alt移出虚拟机光标。4.便携性:放到电脑的文件里头了。本电脑的东西可以直接扔进虚拟机里。下载连接vmware.com。可以测试木马,病毒,楼顶。
2025-02-08 11:47:28
95
原创 可变参数 2.0
/ 自定义日志函数// 包含了日志级别,格式化字符串,自动添加时间戳LOG_INFO,LOG_ERROR,// 这里的格式化用到了 vprintf// 可以接收各种各样的数据报告return 0;break;break;break;// 格式化并输出可变参数。
2025-02-07 10:56:29
646
原创 C语言访问环境变量
getenv_s函数用于获取指定环境变量的值。它是getenv函数的安全版本,通过额外的参数检查避免了缓冲区溢出的风险。_putenv_s是 C 语言中用于安全地设置或删除环境变量的函数,它是putenv函数的安全版本。putenv函数可能会因为传入不恰当的参数而导致程序出现未定义行为,_putenv_s通过更严格的参数检查和错误处理机制来避免这些问题。
2025-02-07 10:47:46
844
原创 封装函数时传入参数的选择
一般情况下,建议使用传入一级指针的方式封装malloc,因为它更简单直观,符合函数设计原则。只有在确实需要在函数内部修改调用者的指针变量时,才考虑使用传入二级指针的方式。//C11#else//C11不可用#endif//在实际应用中,可能不希望在分配失败时候停止程序//所以,这里使用断言为了调试方便,让大家能看到问题//实际在企业中应该根据需求进行错误处理assert(ptr!= NULL);return ptr;if (!
2025-02-07 10:22:51
234
原创 C 语言字符串处理函数详解 2.0
基本操作示例通过strcpy_sstrcat_ssprintf_s等函数的示例,展示了字符串的复制、连接和格式化输出操作。示例代码如下:// 使用strcpy_s进行字符串复制printf("复制成功: %s\n", dest);} else {printf("复制失败,错误码: %d\n", err);// 使用strcat_s连接字符串printf("连接后的字符串: %s\n", dest2);} else {printf("错误: 无法连接字符串\n");
2025-02-06 11:43:06
709
原创 文件的输出与读写 2.0
文件操作函数概述:介绍了 C 语言中用于文件操作的一系列函数,这些函数是实现文件读写功能的基础工具。文件流概念定义与分类这种定义方式包含了各种各样的流。流是一种用于在程序和外部设备(如文件、控制台、网络等)之间进行数据传输的抽象概念。具体类型文件流:用于读取与写入在磁盘上的文件。例如,通过文件流可以从硬盘上的文本文件中读取数据,并将其显示在程序中,或者将程序中的数据写入到文件中,以便后续使用或共享。标准 I/O 流stdin:默认连接到键盘,用于程序输入,通常与scanf_s。
2025-02-06 11:06:50
901
原创 文件的输出和读写 1.0
fgets该函数从指定的文件流stream中读取最多num - 1个字符,并将其存储到字符数组str中,直到遇到换行符\n或者文件结束符EOF为止。读取完成后,会在字符串末尾自动添加字符串结束符'\0'。
2025-02-05 22:30:39
865
原创 函数指针 1.0
这段代码尝试调用一个存储在数组中的函数。state1作为索引,用于从数组中选取特定的函数,然后调用该函数。不过代码里的(void)写法有误,在 C 和 C++ 中,正确调用无参数函数时,括号内不需要写void,直接用空括号()即可。正确写法。
2025-01-31 14:36:45
131
原创 python环境的配置
下载失败,有些包是找到一个压缩文件然后去编译,这时需要编译环境和依赖,这就需要去下载环境,当然更多时候在一个大的版本号之下试一试不同的后缀版本。有时候会出现下载直接失败,这是因为pip用的是国外的网址,连接不稳定,需要的时间长,他会因为时间长直接切换源,所以命令他一直等待。不同的项目需要用到不同的环境和不同的包,使用创建新的python环境,同时需要激活。还报错的话就把写的python文件扔到一个文件里,这就算是弄了一个工程文件。出现红字的话,红字里面就是可以下载的版本,然后选择即可。
2025-01-28 21:25:21
140
原创 可变参数 1.0
需要引入stdarg.h头文件va_liststdarg.hva_listargsargsva_listnum_argsva_startnum_argsva_argargsva_listintva_argsumva_copydestva_listsrcva_list。
2025-01-28 00:57:26
206
原创 悬挂指针 1.0
如果有free的动作出现,一定要将ptr设置为NULL,避免悬挂指针。所以free这一步一定是在最后,不然就会出现悬挂指针的问题。来自于micro_frank。
2025-01-27 21:52:55
63
原创 泛型编程:比较与排序
来源于micro_frankqsort函数介绍qsort是 C 标准库<stdlib.h>中提供的一个通用的快速排序函数,它可以对任意类型的数组进行排序。
2025-01-27 20:56:58
131
原创 头文件 1.0
在visual stdio2022中可以把ifndef和endif改成pragma once效果是一样的。头文件之前要写注释,说明这个头文件是用来干什么的。头文件用来声明,源文件用来实现。),用于防止头文件被重复编译。构成了头文件保护符(
2025-01-27 17:18:32
101
原创 回调函数的妙用
6. 多线程或并发编程中的线程启动函数。10. 资源管理器中的资源释放策略回调。7. 用户界面组件中的自定义渲染策略。9. 状态机实现中的状态转换触发器。5. 排序算法中的自定义比较函数。8. 网络请求处理中的协议解析器。4. 插件架构中的扩展点定义。
2025-01-27 15:29:12
67
原创 回调函数与函数指针
这种方式是指针变量名,可以做函数指针类型,也可以作变量使用。先将一段typedef,为基本数据类型创建别名。这里是定义了一个函数指针类型,
2025-01-27 10:58:27
117
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人