类加载荷初始化

https://blog.youkuaiyun.com/noaman_wgs/article/details/74489549

 

里面有一段分析输出结果的原因

再回过头来分析一开始的面试题: 
Singleton输出结果:1 0 
原因:

1 首先执行main中的Singleton singleton = Singleton.getInstance(); 
2 类的加载:加载类Singleton 
3 类的验证 
4 类的准备:为静态变量分配内存,设置默认值。这里为singleton(引用类型)设置为null,value1,value2(基本数据类型)设置默认值0 
5 类的初始化(按照赋值语句进行修改): 
执行private static Singleton singleton = new Singleton(); 
执行Singleton的构造器:value1++;value2++; 此时value1,value2均等于1 
执行 
public static int value1; 
public static int value2 = 0; 
此时value1=1,value2=0

Singleton2输出结果:1 1 
原因:

1 首先执行main中的Singleton2 singleton2 = Singleton2.getInstance2(); 
2 类的加载:加载类Singleton2 
3 类的验证 
4 类的准备:为静态变量分配内存,设置默认值。这里为value1,value2(基本数据类型)设置默认值0,singleton2(引用类型)设置为null, 
5 类的初始化(按照赋值语句进行修改): 
执行 
public static int value2 = 0; 
此时value2=0(value1不变,依然是0); 
执行 
private static Singleton singleton = new Singleton(); 
执行Singleton2的构造器:value1++;value2++;  
此时value1,value2均等于1,即为最后结果

https://blog.youkuaiyun.com/yaotai8135/article/details/80506071

叙述了初始化顺序 ,static 在初始化阶段执行,所以有上面的结果

<think>好的,我需要帮用户找到关于SX1268芯片的FSK初始化配置的资料或教程。首先,用户提供的参考内容提到LoRa调制解调器可以通过配置寄存器RegOpMode在睡眠模式下切换调制方式,这应该和SX1268相关,因为SX1268支持LoRa和FSK/OOK调制[^1]。接下来,我需要回忆或查找SX1268的数据手册,了解其FSK配置的具体步骤。通常,这芯片的初始化涉及设置调制参数、频率、数据速率、频偏、同步字等。 首先,配置FSK模式需要进入睡眠模式,然后通过SPI接口写入RegOpMode寄存器切换到FSK模式。接着,设置中心频率,比如使用SetRfFrequency命令。然后是调制参数,比如SetModulationParams设置比特率、频偏和带宽。数据包参数设置,如前导码长度、同步字、载荷长度等,通常通过SetPacketParams命令。此外,可能需要配置FIFO、中断和DIO映射,确保芯片能正确处理发送和接收的数据流程。 还要注意用户提到的发送和接收流程:发送时从FIFO提取数据,组包、编码、调制;接收时解调、纠错、提取数据到FIFO。因此,初始化时可能需要配置FIFO阈值、编码方式(如前向纠错)等。此外,参考内容提到LoRa使用扩频和纠错技术,但FSK模式下可能配置不同的纠错或校验机制,比如CRC。 需要验证这些步骤是否符合SX1268的具体寄存器配置,可能需要查阅官方数据手册或应用笔记。如果用户需要示例代码,可能需要基于常见的开发平台,如STM32,提供SPI配置和寄存器写入的代码片段。最后,要确保回答结构清晰,分步骤说明,并推荐相关资源帮助用户进一步查找资料。</think>关于SX1268芯片的FSK初始化配置,以下是基于技术文档的配置方法总结: 1. **模式切换基础** - 需在睡眠模式下通过SPI接口修改`RegOpMode`寄存器值,将工作模式切换为FSK调制 - 典型模式切换代码结构: ```c void SetFSKMode() { EnterSleepMode(); // 进入睡眠模式 WriteRegister(REG_OPMODE, 0x01); // 设置FSK模式 } ``` 2. **核心参数配置流程** - **频率设置**:使用`SetRfFrequency`命令,例如设置868MHz频段: $$ f_{RF} = \frac{868 \times 10^6 \times 2^{19}}{F_XOSC} $$ - **调制参数**:通过`SetModulationParams`配置: ```c uint8_t modParams[3] = { BITRATE_MSB, // 比特率高位 BITRATE_LSB, // 比特率低位 FDEV_MSB, // 频偏高位 FDEV_LSB // 频偏低位 }; ``` - **数据包格式**:使用`SetPacketParams`设置前导码、同步字等: ```c uint8_t pktParams[7] = { PREAMBLE_LENGTH, DETECTOR_EN, // 前导检测器 SYNC_WORD_LEN, ADDR_FILTER // 地址过滤模式 }; ``` 3. **典型配置示例** ```c void FSK_Init() { SetStandbyMode(); // 进入待机模式 SetPacketType(FSK); // 设置调制型 SetRfFrequency(868000000); // 868MHz SetModulationParams(4800, 5000); // 比特率4.8kbps, 频偏5kHz SetPacketParams(0x08, 0x03, 0x12, 0x00); // 前导码8字节,同步字3字节 SetDioIrqParams(0x0003); // 配置中断信号 } ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值