- 博客(56)
- 资源 (1)
- 收藏
- 关注

原创 嵌入式STM32F103温湿度SHT30
**嵌入式STM32F103VE驱动温湿度STH30管脚配置连接SCL->GPIOC8SDA->GPIOE6程序代码#include "stm32f10x.h"#define BIT(x,n) ((x&(1<<n))!=0)#define SCL_PIN GPIO_Pin_6 //SCL PC6#define SDA_PIN GPIO_Pin_...
2019-09-26 11:16:37
2750

原创 蓝桥杯c51单片机省赛温度记录器
温度记录器#include &amp;lt;STC15F2K60S2.H&amp;gt;#include “DS18b20.H”#include &amp;lt;INTRINS.H&amp;gt;#define Y(n) P2=P2&amp;amp;0x1F|(n&amp;lt;&amp;lt;5),P2=P2&amp;amp;0x1Funsigned char
2018-12-15 17:53:59
1620

原创 C51单片机数码管显示数字实现
代码部分:#include <STC15F2K60S2.H>#include <INTRINS.H>#define Y(n) P2=P2&0x1F|(n<<5)unsigned char digit[]={0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90};unsigned char num[8...
2018-12-13 17:09:54
9455
7
原创 java依赖抽象而非具体实现
在大型项目中,某些核心服务(如日志系统、数据库连接、配置管理)需要被多个模块频繁访问。如果每个模块都直接依赖具体实现类的实例化方式(如 new System()),会导致:代码重复:每个模块都需要自己实例化对象。耦合性高:修改具体实现类时,所有依赖它的模块都需要同步修改。难以扩展:替换实现类需要全局搜索并替换所有相关代码。解决方案:通过一个 全局访问点(如 HostInterface.SystemImpl),所有模块只需通过这个统一的入口获取服务实例,无需关心实例如何创建。
2025-04-17 10:10:22
460
原创 eSIM Profile结构与元素(ASN.1)
ASN1START 和 ASN1STOP:是注释标识,表明中间代码段是 ASN.1(一种用于定义数据结构的标准标记法)相关定义。基本整数类型及大小约束maxUint8:定义为INTEGER 类型,值为 255 ,代表 8 位无符号整数能表示的最大值。Uint8:也是 INTEGER 类型,取值范围是 0 到 maxUint8(即 0 - 255 ) ,是 8 位无符号整数类型。maxUint15:值为 32767 ,是 15 位无符号整数能表示的最大值。
2025-04-15 11:24:54
990
原创 T=0 协议下,命令响应传输的规则
在 2、3、4 类情况里,如果在传输完所有命令和(或)响应数据字节前出现该警告指示,可能继续当前过程(如使用 GET RESPONSE 命令传输响应数据字节),也可能触发另一个命令(如 ‘6202’ 到 ‘6280’,使用 GET DATA 命令传输卡中生成的字节串,详见 ISO/IEC 7816 - 4)。在 1 和 3 类情况中,卡不应使用该值。在 4 类情况里,卡接收完 Nc 个命令数据字节后,要准备好接收至少一个 GET RESPONSE 命令,用于传输最多 Ne 个响应数据字节。
2025-04-11 13:37:30
245
原创 私钥、证书、CA 公钥、签名和证书验证服务
当 eUICC 接收到来自 SM - DP + 的操作请求时,会使用私钥对响应数据进行签名,SM - DP + 通过对应的公钥来验证签名的合法性,从而确认数据确实来自该 eUICC。在验证 SM - DP + 的证书时,eUICC 会使用 eSIM CA RootCA Public Key 来验证证书的签名,确保证书的真实性和有效性,进而信任 SM - DP + 的身份和公钥。含义:一种用于验证证书合法性的服务,通过检查证书的颁发者、有效期、证书链的完整性以及证书是否被吊销等信息,来确定证书是否可信。
2025-04-10 11:19:21
530
原创 逻辑通道、LSI 与 LSE 的关系
逻辑通道(Logical Channels):UICC 支持的多个独立通信会话,每个通道可运行不同应用或任务,共享物理接口。通过MANAGE CHANNEL命令管理(打开 / 关闭),最多支持 19 个通道(编号 0-19)。逻辑安全接口,允许终端通过单一物理接口与多个LSE通信。LSI 由连续数字标识(0-0x1F),通过MANAGE LSI命令配置和管理。逻辑安全元件,运行在 UICC 上的独立安全域,每个 LSE 拥有独立的文件系统、应用、安全状态等,逻辑上等同于独立的安全芯片。
2025-03-26 11:04:03
263
原创 CMAC(Cipher-based Message Authentication Code)
CMAC(Cipher-based Message Authentication Code,基于分组密码的消息认证码)是一种基于对称加密算法的消息认证技术,用于验证数据的完整性和真实性。它结合了分组密码(如AES)与特定运算模式,确保只有持有密钥的合法方才能生成或验证认证码。以下是CMAC的详细解析:。
2025-03-25 11:25:08
526
原创 ARM 汇编基础
ARM 汇编是嵌入式开发、操作系统底层编程和性能优化的核心技能之一。以下是一份系统的 ARM 汇编指令教学指南,涵盖基础语法、核心指令、编程模式和实用示例。
2025-03-21 13:57:06
1312
原创 setJmp,longJmp
是 C 语言中用于实现非局部跳转(Non-local Jump)的库函数,允许从深层嵌套的函数调用中直接跳转回某个预设的“检查点”。它们通常用于错误恢复或中断处理,但需要谨慎使用,因为可能绕过正常的函数返回流程,导致资源泄漏等问题。// 跳转到错误处理。// 第一次调用保存上下文。printf(“无法打开文件\n”);printf(“协程启动\n”);printf(“协程恢复\n”);2. 协程或状态机。
2025-03-19 16:12:50
286
原创 Keil中出现“function definition is not allowed here”错误
在Keil中出现“function definition is not allowed here”错误,通常是因为在C语言中不允许在特定位置定义函数。头文件中直接定义函数。
2025-03-11 14:38:27
443
原创 c语言 结构体对齐
ARM7架构(基于ARMv4T)的结构体内存对齐遵循以下规则,以确保数据访问的正确性和效率。编译器指令:使用#pragma pack(n)或__attribute__((packed))可修改对齐规则,但可能导致性能下降或错误。通过sizeof可验证结构体实际大小,结合调试器查看内存布局。硬件限制:ARM7不支持非对齐访问,编译器必须严格对齐。成员顺序优化:合理排列成员可减少填充,节省内存。
2025-03-10 16:06:53
278
原创 嵌入式软件开发流程
目标:明确模块的功能、性能及约束条件。功能需求:模块的输入/输出、数据处理逻辑、交互接口。非功能需求:实时性要求(如响应时间)、资源限制(内存、功耗)、可靠性(容错机制)。外部依赖:与硬件(传感器、外设)、其他模块的交互协议(如CAN、SPI、UART)。输出:需求文档(含功能清单、接口定义、性能指标)。
2025-02-06 16:37:39
398
原创 AES-128、3DES 和 DES 的详细介绍以及示例教程
以下是 AES-128、3DES 和 DES 的详细介绍以及示例教程,包括它们的原理、特点、优缺点以及如何使用 Python 实现加密和解密。
2025-02-06 11:39:30
495
原创 嵌入式软件架构设计
对于不同的微控制器,其 GPIO 寄存器操作方式可能不同,但在 HAL 中可以提供统一的 gpio_init、gpio_set、gpio_get 等函数,内部根据不同的硬件平台调用相应的寄存器操作代码。包含对处理器、外设(如 UART、I2C、SPI、GPIO 等)的初始化、配置和基本操作的函数。例如操作系统抽象层(如果使用操作系统)、文件系统、网络协议栈、加密库等。一个简单的文件系统可以基于存储设备驱动实现文件的创建、读写、删除等操作。对设备进行初始化、数据读写、状态监测等操作,实现设备的具体功能。
2025-01-22 09:47:56
221
原创 应用HCI非接参数切换
3.在修改参数的native函数添加事件通知,请求发起HCI typeA参数切换流程。4.在dispatch分配命令,处理完成命令后,添加while(参数切换成功)等待。5.设置超时200ms,切换超时break,跳出死循环。1.更新typeA参数到配置区。2.添加typeA参数修改标志。
2025-01-13 13:50:49
86
原创 vscode修改中文显示格式
点击该选项的下拉菜单,选择你需要的中文编码格式,如 GBK、GB2312 等。这样,当你新建文件或打开文件时,VSCode 会尝试使用你设置的编码格式来处理文件。2.在搜索框中输入 “encoding”,可以看到 “Files: Encoding” 选项。1.点击 VSCode 界面左侧的 “管理”(齿轮图标),选择 “设置”。
2024-12-26 11:46:55
1168
原创 嵌入式 数据类型占用字节数
在 32 位系统中,long类型一般占用 4 个字节,和int类型字节数相同(在这种情况下,long和int可以相互替代使用,不过它们的语义稍有不同)。这里enum Color类型的变量在 32 位系统中一般占用 4 个字节,它实际上是用整数来表示枚举值,默认情况下RED可能被赋值为 0,GREEN为 1,BLUE为 2 等。在 32 位系统中,union Data类型的变量大小为 4 个字节,因为int和float在 32 位系统中都是 4 个字节,取其中最大的字节数作为联合体的大小。
2024-12-23 10:26:04
811
原创 修改Eclipse中中文的字体大小
在弹出的“Font Size”对话框中,可以设置中文字体的大小。选择需要的字体大小,例如“小”或“中”。在“Font”选项卡中,可以看到当前使用的所有字体。选择需要修改的中文字体,例如“宋体”。在Eclipse菜单栏中选择“Window”->“Preferences”。在弹出的窗口中选择“General”->“Appearance”。在“Appearance”窗口中选择“Font”选项卡。首先,打开Eclipse并打开一个Java项目。点击“OK”按钮,保存设置。
2024-12-14 15:51:02
206
原创 Flash操作 原子写 非原子写
这就叫非原子操作,因为他使用了超过一条的汇编指令,并且可以被中断(相反,只用到一条指令的,无法中断的称作原子操作)。更新一个结构体的多个成员,或者更新一个大于CPU结构的字长(例如,在16位机器上更新一个32位变量)的变量,都是非原子操作的例子。如果中断,可能会导致数据丢失或损坏。第1句,从PORTA的地址读取数据,保存到R1;第3句,R1和R2进行或操作,并存入R1;第4句,把R1的值保存到PORTA的地址去。第2句,把0x01保存到R2;
2024-12-10 21:02:19
165
原创 Freertos任务切换
FreeRTOS 有些 API 函数也会调用函数 taskYIELD(),这些 API 函数都会导致任务切换,这些 API 函数和任务切换函数 taskYIELD()都统称为系统调用。taskSELECT_HIGHEST_PRIORITY_TASK()本质上是一个宏,在 tasks.c 中有定义。(2)、调用函数 taskSELECT_HIGHEST_PRIORITY_TASK()获取下一个要运行的任务。FreeRTOS 中查找下一个要运行的任务有两种方法:一个是通用的方法,另外一个就是使用。
2024-12-05 17:47:35
1056
2
原创 FreeRtos异常调试手段
MSP(主堆栈指针)通常用于操作系统和异常事件(中断或其他fault)。在复位后,Cortex-M默认进入线程模式、特权级、使用MSP堆栈³。裸机操作时,使用的就是MSP指针。PSP(进程堆栈指针)通常用于用户程序(线程)。在OS初始化时,对PSP进行初始化。
2024-11-19 15:22:31
194
原创 uicc.hci.service的理解
i : getHCIservice 调用并实现serviceimp,并记录appid。二、uicc.hci.serviced的三个包。
2024-10-28 20:40:16
422
原创 原码 反码 补码
补码: 正数的补码就是其原码,负数的补码是它的反码加1。负数: 原码符号位除外,其他位按位取反。负整数: 补码等于负整数的反码加一。反码: 符号位不变,其它位按位取反。数据在内存中都是按照补码存储。原码: 数据本身的二进制。
2024-10-28 15:02:26
368
原创 mifare4mobile框架
VC Manager生命周期状态:包括SELECTABLE、VC_CREATED、VCM_PERSONALIZED和LOCKED等状态,以及这些状态之间的转换规则,如通过特定命令或事件进行状态转换,同时在状态转换时需要考虑与关联的Service Manager的交互以及VC的状态。综上所述,MIFARE4Mobile框架通过这些组件、接口、元数据管理和生命周期状态的定义,实现了对MIFARE虚拟卡和应用程序的全面管理和控制,确保了系统的安全性、灵活性和可扩展性。
2024-07-25 10:12:59
742
C51单片机18个功能的例子程序适合小白新手入门学习.zip
2019-09-26
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人