# VSCode 问题修复指南

## 问题 1: prj.conf 编码错误

**错误信息**：
```
Kconfig tree parse failed: 'cp950' codec can't decode byte 0x9b in position 19
```

**原因**：
- Windows 系统默认使用 cp950（繁体中文）编码
- prj.conf 文件中有中文字符，但使用了错误的编码

**解决方法**：
1. 在 VSCode 中打开 `prj.conf`
2. 点击右下角的编码显示（如 "UTF-8" 或 "cp950"）
3. 选择 "通过编码保存" → 选择 "UTF-8"
4. 保存文件

或者使用命令：
1. 按 `Ctrl+Shift+P`
2. 输入 "Change File Encoding"
3. 选择 "Save with Encoding"
4. 选择 "UTF-8"

## 问题 2: VSCode 找不到 Zephyr 头文件

**错误信息**：
```
cannot open source file "zephyr/kernel.h"
cannot open source file "zephyr/logging/log.h"
...
```

**原因**：
- VSCode 的 C/C++ 扩展（IntelliSense）需要知道头文件的位置
- 这些是 IntelliSense 错误，**不影响实际编译**

**解决方法**：

### 方法 1: 使用已创建的配置文件（推荐）

已创建 `.vscode/c_cpp_properties.json`，包含正确的 includePath。

如果仍有问题，请：
1. 按 `Ctrl+Shift+P`
2. 输入 "C/C++: Reset IntelliSense Database"
3. 重新加载窗口（`Ctrl+Shift+P` → "Developer: Reload Window"）

### 方法 2: 手动配置

1. 按 `Ctrl+Shift+P`
2. 输入 "C/C++: Edit Configurations (JSON)"
3. 确保包含以下路径：
   ```json
   {
       "includePath": [
           "${workspaceFolder}/firmware-ncs/src",
           "${workspaceFolder}/firmware-ncs/build/zephyr/include/generated",
           "C:/ncs/v2.5.1/zephyr/include",
           "C:/ncs/v2.5.1/zephyr/include/zephyr",
           "C:/ncs/v2.5.1/nrf/include"
       ]
   }
   ```

### 方法 3: 忽略 IntelliSense 错误（如果编译正常）

如果项目可以正常编译，这些只是 IntelliSense 的警告，可以：
1. 在 VSCode 设置中禁用错误波浪线：
   ```json
   "C_Cpp.errorSquiggles": "disabled"
   ```
2. 或者只在使用时查看，不影响实际开发

## 问题 3: Bluetooth 警告

**警告信息**：
```
The Bluetooth subsystem must be enabled by CONFIG_BT to be included in the build
```

**原因**：
- IntelliSense 检测到使用了 BLE 头文件，但不确定 CONFIG_BT 是否启用

**解决方法**：
- 这个警告可以忽略，因为 `prj.conf` 中已经设置了 `CONFIG_BT=y`
- 如果编译正常，说明配置是正确的

## 验证修复

1. **检查 prj.conf 编码**：
   - 打开文件，右下角应显示 "UTF-8"
   - 重新编译，Kconfig 错误应该消失

2. **检查 IntelliSense**：
   - 重新加载 VSCode 窗口
   - 等待 IntelliSense 重新索引（可能需要几分钟）
   - 头文件错误应该减少或消失

3. **验证编译**：
   - 运行 `west build` 或使用 VSCode 的构建任务
   - 如果编译成功，说明配置正确

## 注意事项

- **IntelliSense 错误不影响编译**：如果项目可以正常编译，这些只是编辑器提示问题
- **首次索引需要时间**：VSCode 需要扫描所有头文件，可能需要几分钟
- **环境变量**：确保 `ZEPHYR_BASE` 和 `NRF_CONNECT_SDK_PATH` 环境变量已设置

