- 博客(42)
- 资源 (1)
- 收藏
- 关注
原创 C语言中字符串变量的处理
char *strcat(char *dest, const char *src) strcat() 函数是C语言标准库 <string.h> 中最常用的字符串连接函数。strncat() 函数是 strcat() 的一个更安全的变体,它允许指定最大追加字符数,有助于防止缓冲区溢出。值的注意的是,用strcpy拼接字符串时,复制的起始地址应该是结束符占用的那个地址。strlen() 获取字符串,注意,获取的长度不包含结束符占用的那个字节。第二次拼接时,b的首字符应该复制到上一个结束字符占用的地址。
2025-04-21 14:59:07
258
原创 C语言结构体sizeof对齐规则详解
在C语言中,使用sizeof运算符计算结构体的大小时,得到的结果是对齐之后占用的字节数,而非成员变量实际长度的简单相加。这是因为编译器会根据平台的对齐规则,在成员之间或结构体末尾插入填充字节,以优化内存访问效率。每个成员的必须是其类型大小(或编译器指定的对齐值)的整数倍。整个结构体的大小必须是其的整数倍(末尾可能填充)。成员的顺序会影响填充字节的数量。编译器会插入“填充字节”(Padding)以满足对齐要求。默认对齐值通常由目标平台决定(如32位系统通常按4字节对齐)。
2025-04-07 15:53:38
387
原创 FreeRTOS中互斥量实现数据共享优化
的实现,读任务可以高效并发,而写任务保证数据一致性。此方案在 FreeRTOS 中充分利用任务通知和互斥量,兼顾性能与可靠性,适用于读多写少的场景。读者-写者锁(Reader-Writer Lock)**优化,允许多个读任务并发访问共享数据,而写任务独占访问。当前实现假设单写任务。如需支持多写任务,需引入队列管理等待的写任务。如果读任务持续不断,写任务可能长期等待。)自动启用优先级继承,避免低优先级任务阻塞高优先级任务。:控制新读任务的进入,写任务执行时阻塞新读任务。:唤醒等待的写任务,避免忙等待。
2025-04-06 14:03:07
895
原创 字模III取模软件生成数组规律分析
以16*16大小的点阵为例,取模方式如图中所示,纵向取模,字节倒序,生成的数组的顺序,先取上半部分,再取下半部分。例如 0010 0000 ,正常是0x20,如果是字节倒序的话就是0x02。选择纵向,就是垂直方向上递增,字节倒序,就是和正常的二进制数权重值相反,从生成的数组我们可以推断出取模的路径是如下方式,
2025-03-18 09:06:21
167
原创 点阵取模中的字节正序和字节倒序
图中点阵 bit 左边为字节高位,右边为字节低位,得到的结果,以0x08,0x08开头,此为字节正序。相反,如果是字节倒序的话,就是0x10,0x10开头,以上取模方式采用横向取模。如果是纵向取模同理。以16*16点阵为例,
2025-03-17 22:25:42
289
原创 vscode 中打开ESP-IDF插件的欢迎页面
在命令行中输入 ESP-IDF:Welcome 回车就能打开插件的欢迎页面了。按快捷键 ctrl+shift+p 或者 查看 命令面板。
2025-03-15 10:05:59
388
原创 嘉立创EDA标准版自定义元件库
从文件入口进入,选择新建,如果是原理图符号就选择符号,如果是PCB封装就选择封装。将画好的原理图符号和封装保存即可。
2025-02-24 16:15:45
353
原创 E2Studio 查看RAM ROM使用情况
安装完成后选择renesas views → C→ Memory Usage。在控制台就可以看到 RAM ROM的使用情况了。安装时选择full版本。
2024-12-28 09:30:52
247
原创 AutoCAD学习001
AutoCAD 的空间分为模型空间和图样空间。模型空间是我们通常绘图的空间,而在图样空间中,用户可以创建叫作浮动视口的区域,以不同视图显示所绘图形。布局是系统为绘图设置的一种环境,包括图样大小,尺寸单位,角度设定,数值精确度等。在系统预设的三个标签中,这些环境变量都是根据默认设置。从菜单栏的工具进入 选择工具栏 AutoCAD 后面的就是对应的工具栏,如果是关闭状态 按一下就打开,开启状态,按一下就关闭。默认设定一个模型空间布局标签和 布局1 布局2 两个图样空间布局标签。然后可以选择绘图区的背景色。
2024-07-30 19:24:35
261
原创 气压一些常用单位分析
1标准大气压 =101325 帕斯卡(Pa) =1013.25 百帕(hpa) =101.325 千帕(kpa) =0.101325 兆帕(MPa) =760 毫米汞柱(mmHg) =29.9212598 英寸汞柱(in Hg) =1.01325 巴(bar)如上图所示,如果使用天然气作为气源,额定的燃气压力是2000Pa,我们知道标准大气压是101.325Kpa,那么燃气压力比标准大气压还低吗?这里的燃气压力指的相对于标准大气压,这里的2Kpa指的是比标准大气压高2Kpa.额定燃气压力比标准大气压还低?
2024-07-03 16:35:42
1225
原创 win10电脑安装VS2010
直接点击提示框上的链接,发现官方已经不支持此下载链接。打开后提示以下内容,还是无法运行。安装完成后找不到应用的打开路径。找到安装目录所在的启动文件。找到一个迅雷的下载链接。下载完成后,开始安装。
2024-06-21 16:56:42
665
原创 C# winform 如何在不同对象间共享数据
例如,静态字段或属性适合简单的全局数据共享,而单例模式更适合需要管理复杂状态的场景。通过事件或委托则适用于需要实时更新的情况。### 方法三:使用全局变量或全局状态类。3. **使用全局变量或全局状态类**### 方法五:通过构造函数或方法传递。5. **通过构造函数或方法传递**### 方法一:使用静态字段或属性。1. **使用静态字段或属性**使用事件或委托在对象间传递数据。### 方法四:通过事件或委托。4. **通过事件或委托**通过构造函数或方法传递数据。2. **使用单例模式**
2024-05-22 17:09:20
673
原创 突然串口找不到,并且驱动安装失败解决办法
计算机\HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Class\{4d36e978-e325-11ce-bfc1-08002be10318}网上有很多处理其他设备的文章,例如键盘,网卡,这个红色标记箭头的参数是不一样的,特别注意,删除UpperFilters项。卸载该设备,再重新扫描硬件更新,问题依旧。由于其配置信息(注册表中的)不完整或已损坏,Windows 无法启动这个硬件设备。突然一下 所有的USB转串口工具都无法使用了。
2024-05-17 17:20:03
1801
原创 单片机C生成随机数
来计算下一个随机数,并将其保存为新的种子值。请注意,初始种子值应足够随机,可以使用一些其他的方法来提供初始种子值,比如获取某个传感器值或时间戳。要使用该随机数生成函数,需要先初始化种子,在合适的地方调用一次。
2023-11-26 18:53:20
1039
原创 STM32 HAL库应用systick
因此在新的hal库中 HAL_Init()函数 直接初始化并使能了systick,使其产生1ms定时器中断,并且设置优先级,无需再调用SysTick_Config(setvalue)函数。systick 是所有cm3 cm0 都有的一个定时器,正因为有这个共性,所以被广泛使用。
2023-11-24 17:02:00
520
原创 STM32F030 Flash 结构
从上面可以看出,STM32F030 Flash页的大小有两种规格,一种是1KB每页,一种是2KB每页,使用时要注意这个问题,尤其是在操作Flash时,起始地址的计算时。
2023-11-24 11:35:02
393
1
原创 STM32 HAL 库开启串口中断
stm32 HAL 设置串口中断函数 void HAL_UART_MspInit(UART_HandleTypeDef* huart),该函数位于stm32f0xx_hal_msp.c ,该文件存放板级初始化代码。关键点 HAL_NVIC_SetPriority(USART1_IRQn, 0, 0);设置中断优先级 ,和 开启中断。
2023-11-21 15:51:41
755
1
原创 stm32中systick时钟系统设置
从stm32CubeMx中,可以看到systick的是输入时钟是To Cortex System timer。通过SysTick_Config(valueset) 来设定systick计时和开启中断。该函数设定了定时参数,同时开启了中断。
2023-11-21 14:44:38
1094
1
原创 C语言中如何将十六进制数转成对应的字符串
上述程序中,sprintf() 函数将以十六进制格式表示的 hex_num 转化为字符串,并存储在 hex_str 中。同时,由于sprintf()函数中的格式字符串 “%02X” 中的“02”表示最少需要两个字符来表示 hex_num,而 “X” 表示转换为大写字母表示的十六进制数。‘%02’ 中的0表示 不足两位时前面用0补齐,转换后的字符串为 “16”。注意:在使用 sprintf() 函数时,需要确保定义的字符串数组长度不小于转换后字符串的长度,否则会导致越界。
2023-11-17 15:20:26
5427
1
原创 C51 中指针变量的强制类型转换
unsigned long*类型指针通常指向一个4字节或8字节的整数,在进行强制类型转换后,指针的解释方式将变为以一个字节为单位。内存访问错误:将一个大块的内存解释为字节序列时,如果读取或写入的字节数超过实际分配的字节数,就会导致越界访问,并可能导致程序崩溃或产生不正确的结果。因此,尽管可以进行指针类型的强制类型转换,但需要谨慎使用,并确保在转换后正确处理指针访问以及转换后数据的解释。这样做强制类型转换时,pbb获取到的地址就是地址0,因此*pbb的值就是0,没有达到要将1传输。给pbb所在地址的目的。
2023-11-16 10:38:13
491
1
原创 C 语言取绝对值
在C语言中,你可以使用库函数`abs()`来取得一个数的绝对值。`abs()`函数属于 `<stdlib.h>` 头文件,并且可以处理多种类型的数据。使用库函数更简洁方便,而自己编写函数则可以根据需求进行更多的定制化操作。// 使用 abs() 函数获取绝对值。另外,你也可以自己编写一个函数来计算绝对值。printf("绝对值: %d\n", absNum);printf("绝对值: %d\n", absNum);
2023-09-23 14:44:23
8642
1
原创 通过IP和子网掩码计算设备是不是在同一网段
1. 假设有两个设备 A 和 B,它们分别具有 IP 地址 A.IP 和 B.IP,子网掩码 A.Mask 和 B.Mask。3. 将 IP 地址和子网掩码进行按位与操作。A.IP & A.Mask = B.IP & B.Mask,它们相同。4. 比较结果,如果两个设备的按位与结果相同,则它们在同一个网络中。4. 比较两个设备的按位与结果,如果相同,则它们在同一个网络中。2. 将 IP 地址和子网掩码转换为二进制表示。3. 对 IP 地址和子网掩码进行按位与操作。1. 获取设备的 IP 地址和子网掩码。
2023-09-23 14:40:40
912
1
原创 FreeRTOS学习(二) ——任务的栈空间
任务栈空间xtaskcreate() 的第三个参数 usStackDepth ,当任务创建时,内核会为每个任务分配属于任务自己的唯一状态,usStackDepth值告诉内核为它分配多大的栈空间这个值指定的栈空间可以保存多少个字,而不是多少个字节。比如,如果是32位宽的栈空间,传入的值是100,那么将会分配400个字节的栈空间。configMINIMAL_STACK_SIZE 来决定空闲任务用的栈空间大小。在FreeRTOS 为微控制器架构提供的demo应用程序中,赋予此常量的值,是对所有
2022-03-05 14:08:52
1591
原创 FreeRTOS学习(一)
FreeRTOS 入门手册_中文版1 任务函数由C语言组成 必须返回void 带一个void* 指针参数void ATaskFunction(void*pvParameter){int iVariableExample=0;for(;;){死循环}}2 任务状态总的状态 分两个状态 运行态 休眠态3创建任务xTaskCreate(); 创建任务4任务优先级xTaskCreate()函数参数列表的倒数第二个参数表示任务的优先级,如果是任务
2022-03-04 12:36:52
831
原创 注册表中添加和删除启动项
万能的方式看来的这么做:开机启动项删除:[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]"msconfig"里面多余的启动项(被禁用的启动项)[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Shared Tools\MSConfig\startupreg]删除后,再次查看msconfig:开机启动项删除和添加:[HKEY_LOCAL_MACHINE\SOFTWARE\.
2021-05-31 10:13:04
1030
原创 asp.net appConfig文件的使用
用visual studio 新建工程当选择的目标框架低于4.5版本时工程文件夹里面不会自动出现 App.config文件当选择的目标框架大于等于 .net framework 4.5时 ,会自动添加App.config到工程目录中。工程目标框架为.net framework3.5 默认没有引用System.configuration.dll 需要手动添加对该文件的引用添加引用 .net 选项卡下 添加System.configuration这样 就可以使用Co...
2021-05-31 10:11:41
382
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人