- 博客(39)
- 资源 (1)
- 收藏
- 关注
原创 WinLibs GCC安装步骤
WinLibs GCC 是一个专门为 Windows 系统提供的 预编译 GCC(MinGW-w64)工具链 的项目,由开发者 Brecht Sanders 维护。它包含了完整的 GNU 编译器集合(GCC)、GDB 调试器、Make 工具以及其他开发所需的库,方便 Windows 用户直接使用,而无需手动编译整个工具链。
2025-06-06 08:30:00
351
原创 memcyp复制结构体的指针成员导致数据不符合预期
memcpy 会把 device_data 的所有成员(包括 test 指针)复制到 TARGET_ADDRESS,但 test 指向的 test_data 数组不会被复制,只会复制指针值(地址)。掉电后,test_data 区域的数据会全部丢失(0x20000000 或其他地址),复位后,又重新分配地址赋值,所以打印数据不是每次唤醒后,数组数据都加1。memcpy 只会复制指针的值(地址),而不会复制指针指向的数据(test_data 数组)。// 这是一个指针,指向 test_data 数组。
2025-06-05 08:30:00
283
原创 在Keil中生成BIN文件方法
这种方法是通过 ARM 工具链中的 fromelf 工具直接从 ELF 格式的 .axf 文件中提取二进制镜像(BIN),通过配置项目选项,让Keil在编译后自动生成BIN文件,无需手动转换。转到 Output 选项卡,确保已勾选 Create Executable(生成.axf文件)。点击工具栏的 Options for Target(魔术棒图标)。在工程目录下,Objects目录中就会有生产的.bin文件。在Keil中打开你的工程。
2025-04-24 08:30:00
933
原创 散列加载描述文件
这个散列加载描述文件定义了如何将程序的不同部分映射到嵌入式系统的内存中。它确保了代码和数据被正确地加载到Flash和SRAM中,并且在系统启动时能够按照预期执行。这种配置对于嵌入式系统开发至关重要,因为它直接影响到系统的初始化和运行时行为。
2025-02-27 21:30:00
791
原创 用数组实现简易的 FIFO(先进先出)队列(C语言)
从用户的角度来看,队列的内容为 [b, c],其中 b 是队首元素,c 是队尾元素。如果再次调用,则会返回 c,并且 out 将会增加到 3。在这一步之后,尽管 a 已经被“移除”,它仍然存在于 fifo[] 数组中,只是我们不再认为它是队列的一部分,因为 out 指针已经前进到了下一个位置。最终,队列中的有效数据为 b 和 c,分别位于 fifo[1] 和 fifo[2] 中。in 指向下一个可以插入的位置(即索引 3),而 out 指向下一个可以读取的位置(即索引 1)。
2025-01-08 08:45:00
493
转载 提高MSP430G系列单片机的Flash 擦写寿命的方法
在芯片上电初始化时,首先查找出第一个尚未写入数据的子页,并进行标识,在进行写EEPROM操作时,应用程序需将待写入EEPROM 子页的所有数据按照事先约定好的顺序整理好,再一次性将所有变量数据写入空的子页中,最后将模拟EEPROM 的操作指针指向下一个空闲的子页,等待下一次写入。在软件处理中,当成功保存Flash 数据后,再写入该子页的状态标志。• FlashWrite()用于写Flash,传递的形参包括指向待写入数据的指针,待写入数据在子页中的起始字节编号,写入数据的长度,原型如下。
2024-12-20 08:00:00
205
转载 EEPROM与SPI Flash的存储和写入机制
因此,若要更改某些位为“1”,必须先擦除(将数据恢复为全“1”状态),然后才能写入新的数据。擦除操作:擦除通常是按块(Block)或扇区(Sector)进行,擦除后整个块的内容会被重置为全1(通常是0xFF),然后才可以进行新的写入。SPI Flash:需要先擦除才能重新写入,因为它的存储结构只允许将数据位从“1”变为“0”,而反向则必须先擦除。内部机制:EEPROM在写入数据时,内部会执行擦除和编程操作,使新数据直接覆盖旧数据,因此用户无需手动擦除。EEPROM:可以直接按字节写入,不需要用户手动擦除。
2024-12-19 16:11:14
380
原创 8051中定义变量所在内存的位置
对于8051架构的微控制器,全局变量通常会被放置在内部数据存储区(IDATA)或外部数据存储区(XDATA)中,具体取决于变量的声明方式和编译器的默认设置。访问方式:内部数据存储区(IDATA)使用寄存器间接寻址,外部数据存储区(XDATA)使用16位地址和 MOVX 指令。紧凑模型(Compact Model):全局变量默认放在外部数据存储区(XDATA),但使用寄存器间接寻址。大型模型(Large Model):全局变量默认放在外部数据存储区(XDATA),使用16位地址。
2024-11-19 21:30:00
530
1
原创 8051中DATA,IDATA,XDATA有什么区别
例如,将频繁访问的变量和临时数据存储在IDATA中,将大量数据存储在XDATA中。DATA 和 IDATA 是两个不同的存储区域,尽管它们都位于内部RAM(IRAM)中,但它们在寻址方式和使用上有显著的区别。在嵌入式系统中,特别是使用8051架构的微控制器时,内部数据存储区(IDATA)和外部数据存储区(XDATA)有明显的区别。IDATA:内部RAM,访问速度快,容量较小,适合存储频繁访问的数据。XDATA:外部RAM,访问速度较慢,容量较大,适合存储大量数据。指令集:主要使用 MOVX 指令进行访问。
2024-11-18 21:00:00
1303
原创 MDK报错 .error: unknown register name ‘msp‘ in asm
在MDK 桌面图标,右击打开安装位置,在:\Keil_v5\UV4 中找到 UVCC.ini 文件。上面的错误就是找不到armcc.h 中的psp。然后关闭MDK重新打开,就可以解决错误。
2024-08-23 18:30:00
362
原创 Python3 推导式
本文主要介绍Python中的推导式,主要内容包括推导式简介、列表(list)推导式、字典(dict)推导式、集合(set)推导式。
2024-06-07 09:00:00
427
原创 Python3 迭代器和生成器
在 Python 中,迭代器(iterator)是一个实现了迭代器协议(Iterator Protocol)的对象。该协议包含两个方法:iter() 和 next() 方法。# 再次调用 next() 方法将引发 StopIteration 异常12345iter() 方法还接受一个可选的参数,用于指定当迭代器对象中没有剩余的元素时,返回的默认值。如果不指定该参数,则默认会引发 StopIteration 异常。# 再次调用 next() 方法将返回指定的默认值 01 2 3 0。
2024-06-06 09:00:00
624
原创 Python3 元组、列表、字典、集合小结
本文主要对Python中的元组、列表、字典、集合进行小结,主要内容包括知识点回顾、异同点、使用场景。
2024-06-05 18:15:00
1420
原创 Python3 match-case 语句
本文主要介绍match-case语句与switch-case的区别,及match-case语句的基本用法。
2024-06-02 13:00:00
1321
转载 Python3位运算符
本文介绍的是位运算符,位运算可以理解成对二进制数字上的每一个位进行操作的运算,位运算分为 布尔位运算符 和 移位位运算符。
2024-06-01 08:15:00
436
原创 STM32F103硬件触发中断到实际执行中断服务程序的过程
综上所述,从硬件触发中断到实际执行中断服务程序的总时间大致在几十纳秒到几十微秒之间,具体数值取决于以下几个因素:1)中断源的响应速度:硬件电路对事件的检测速度。2)NVIC处理速度:中断请求的接纳、优先级判断和切换速度。3)处理器时钟频率:影响指令执行速度和内存访问速度。4)中断服务程序前导代码:保存现场所需的操作数和指令数量。对于STM32F103这类高性能MCU来说,中断响应时间一般可以做到非常短,确保实时性要求较高的应用能够得到及时处理。
2024-05-30 08:00:00
548
MinGW-w64 GCC 工具链,主要用于在 Windows 上搭建 C/C++ 开发环境
2025-06-05
IAR激活步骤,测试可用
2025-02-13
Typora 是一款由 Abner Lee 开发的轻量级 Markdown 编辑器,与其他 Markdown 编辑器不同的是,Typora 没有采用源代码和预览双栏显示的方式,而是采用所见即所得的编辑
2025-02-21
JLink-Windows安装包集合
2024-05-31
PCB布线指南/Allegro培训
2022-05-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人