问题描述
我正在使用北欧NRF52设置VSCode进行嵌入式开发。 我注意到在nrf_sdk中有几个板和几个软设备的示例。 我已经看到,可以引用先前在任务,启动和扩展属性中都定义的env变量,例如:c_cpp,stm32-for-vscode。但是,如何在工作区文件中将一节定义为my_vars,使工作区文件看起来像这样?
{
"my_vars": {
"BOARD_NAME": "NRF52840_MDK_USB_DONGLE","MCU_NAME": "NRF52840","SOFT_DEVICE": "S140","BOARD_VARIANT_PATH": "/pca10059/mbr"
},"launch": {
"version": "0.2.0","configurations": [
{
"name": "Cortex Debug","cwd": "${workspaceRoot}","executable": "${workspaceFolder}${my_vars:BOARD_VARIANT_PATH}/armgcc/_build/${my_vars:MCU_NAME}_xxaa.out","request": "launch","type": "cortex-debug","servertype": "jlink","device": "nrf52","interface": "swd","ipAddress": null,"serialNumber": null,"armToolchainPath": "${env:VSARM}/armcc/bin/"
},]
},"folders": [
{
"path": "."
}
],"settings":{
// "C_Cpp.name": "nRF52840 DK","C_Cpp.default.includePath": [
"${workspaceFolder}/**","${env:GNU_GCC}/arm-none-eabi/include","${env:NRF_SDK}/modules/**","${env:NRF_SDK}/components/**"
],"C_Cpp.default.defines": [
"${my_vars:BOARD_NAME}","CONfig_GPIO_AS_PINRESET","INITIALIZE_USER_SECTIONS","FLOAT_ABI_HARD","NRF52","${my_vars:MCU_NAME}_XXAA","NRF_SD_BLE_API_VERSION=6","${my_vars:SOFT_DEVICE}","SOFTDEVICE_PRESENT","SWI_disABLE0"
],"C_Cpp.default.compilerPath": "${env:GNU_GCC}/bin/arm-none-eabi-gcc","C_Cpp.default.cStandard": "c11","C_Cpp.default.cppStandard": "c++17","C_Cpp.default.intelliSenseMode": "clang-x64"
},"tasks": {
"version": "2.0.0",// See https://go.microsoft.com/fwlink/?LinkId=733558
// for the documentation about the tasks.json format
"tasks": [
{
"label": "nRF52 build","type": "shell","command": "make","options": {
"cwd": "${workspaceFolder}${my_vars:BOARD_VARIANT_PATH}/armgcc"
},"problemmatcher": [],"group": {
"kind": "build","isDefault": true
}
},{
"label": "nRF52 build clean","command": "make clean","isDefault": true
}
},{
"label": "nRF52 flash","command": "make flash","isDefault": true
},"problemmatcher": []
},{
"label": "nRF52 dfu upload","command": "make bootload",{
"label": "nRF52 flash_softdevice","command": "make flash_softdevice",},{
"label": "nRF52 sdk_config","command": "make sdk_config",{
"label": "nRF52 erase","command": "make erase",}
]
}
}
我尝试执行一个名为set_env的任务,在我的情况下,由于我在Windows中,因此运行一个执行以下操作的批处理脚本:
set BOARD_NAME=NRF52840_MDK_USB_DONGLE
set MCU_NAME=NRF52840
set SOFT_DEVICE=S140
set BOARD_VARIANT_PATH=/pca10059/mbr
与https://marketplace.visualstudio.com/items?itemName=bmd.stm32-for-vscode一样,这将大大简化SDK示例的使用,并且可能是NRF52 VSCode扩展的潜在工作。
解决方法
看看扩展名Command Variable。
它可以将文件的内容用作key-value pairs。