参考视频

    视频中的资料,其中如果你有其中一个版本就不用下载,vscode主要的是openocd-0.10.7
    为了方便,将openocd目录/bingcc-arm-none-eabi-9-2019-q4-major-win32-sha2.exe

    image.png
    image.png
    编辑到环境变量中,之后可以使用

    1. openocd

    来查看版本(注意: 你的环境变量中的bin中需要右openocd.exe文件)
    可以安装[stm32cubemx](https://www.st.com/en/development-tools/stm32cubemx.html#overview)来快速初始化项目。其中注意安装时:
    image.png
    点击俩个就修改不了安装依赖库stm32f4x的安装目录了
    安装后修改包安装目录和库
    image.png

    image.png
    修改Repository Folder一开始是C盘,可以存放到你想要存放的盘中
    之后Alt+U:
    image.png
    image.png
    安装你想要的包。
    然后就是基本STM32配置了
    image.png
    现在我手上就这块芯片,我们点亮一个LED灯
    image.png
    IDE我们使用的是Makefile
    image.png
    之后我们点击GENERATE CODE来下载源码(HAL库)

    1. int main(void)
    2. {
    3. /* USER CODE BEGIN 1 */
    4. /* USER CODE END 1 */
    5. /* MCU Configuration--------------------------------------------------------*/
    6. /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
    7. HAL_Init();
    8. /* USER CODE BEGIN Init */
    9. /* USER CODE END Init */
    10. /* Configure the system clock */
    11. SystemClock_Config();
    12. /* USER CODE BEGIN SysInit */
    13. /* USER CODE END SysInit */
    14. /* Initialize all configured peripherals */
    15. MX_GPIO_Init();
    16. /* USER CODE BEGIN 2 */
    17. /* USER CODE END 2 */
    18. /* Infinite loop */
    19. /* USER CODE BEGIN WHILE */
    20. while (1)
    21. {
    22. uint32_t i = 200;//添加这段
    23. HAL_GPIO_TogglePin(GPIOC,GPIO_PIN_13);//添加这段
    24. HAL_Delay(i); //添加这段
    25. /* USER CODE END WHILE */
    26. /* USER CODE BEGIN 3 */
    27. }
    28. /* USER CODE END 3 */
    29. }

    以上添加的地方,其他都是自动生成的
    vscode插件

    1. C/C++
    2. Bracket Pair Colorizer 2
    3. Chinese
    4. Cortex-Debug

    这四个插件
    Ctrl+shift+p选择C/C++编译配置(UI)
    image.png
    选择自己gcc.exe安装目录
    image.png
    一开始只有_DEBUGUNICODE,点击项目下Makefile文件,选取:

    1. # C defines
    2. C_DEFS = \
    3. -DUSE_HAL_DRIVER \
    4. -DSTM32F401xE

    (不改动Makefile文件)最后俩行取消最前的-D和最后面的\的东西添加到上图中,C文件就不会报错
    有个小BUG的话(uint_32数据类型会报错)那就修改为
    image.png

    1. make#可以生成build文件

    接下来配置你的.vscode文件中的内容

    1. {
    2. "tasks": [
    3. {
    4. "type": "cppbuild",
    5. "label": "C/C++: gcc.exe 生成活动文件",
    6. "command": "D:/LearnApp/SDK/C/Feil/mingw64/bin/gcc.exe",
    7. "args": [
    8. "-fdiagnostics-color=always",
    9. "-g",
    10. "${file}",
    11. "-o",
    12. "${fileDirname}\\${fileBasenameNoExtension}.exe"
    13. ],
    14. "options": {
    15. "cwd": "D:/LearnApp/SDK/C/Feil/mingw64/bin"
    16. },
    17. "problemMatcher": [
    18. "$gcc"
    19. ],
    20. "group": {
    21. "kind": "build",
    22. "isDefault": true
    23. },
    24. "detail": "调试器生成的任务。"
    25. },
    26. //按照以上格式添加这段
    27. {
    28. "type": "shell",//类型
    29. "label": "Build & Update", //运行任务中的名称
    30. "command": "D:/IOT/STM32/File/openocd-0.10.0/bin/openocd.exe", //执行的命令
    31. "args": [
    32. "-f", //文件
    33. "D:/IOT/STM32/File/openocd-0.10.0/scripts/interface/jlink-swd.cfg",
    34. "-f",
    35. "D:/IOT/STM32/File/openocd-0.10.0/scripts/target/stm32f4x.cfg",
    36. "-c",
    37. "program build/401CEU6fist.elf verify reset exit" //build/401CEU6fist.elf: 是你build里面的.elf文件名称和build路径
    38. ],
    39. "problemMatcher": [
    40. "$gcc"
    41. ],
    42. "group": {
    43. "kind": "build",
    44. "isDefault": true
    45. },
    46. "detail": "调试器生成的任务。"
    47. },
    48. //按照最上面的格式添加这段
    49. {
    50. "type": "shell",//类型
    51. "label": "Build",//运行任务中的名称
    52. "command": "make",//执行的命令(需要在环境依赖中有配置)
    53. "args": [
    54. ],
    55. "problemMatcher": [
    56. "$gcc"
    57. ],
    58. "group": {
    59. "kind": "build",
    60. "isDefault": true
    61. },
    62. "detail": "调试器生成的任务。"
    63. }
    64. ],
    65. "version": "2.0.0"
    66. }

    image.png创建launch.json文件

    配置如下:

    1. {
    2. // 使用 IntelliSense 了解相关属性。
    3. // 悬停以查看现有属性的描述。
    4. // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    5. "version": "0.2.0",
    6. "configurations": [
    7. {
    8. "cwd": "${workspaceRoot}",
    9. "executable": "build/401CEU6fist.elf",
    10. "name": "Debug with OpenOCD",
    11. "request": "launch",
    12. "type": "cortex-debug",
    13. "servertype": "openocd",
    14. "configFiles": [
    15. "D:/IOT/STM32/File/openocd-0.10.0/scripts/interface/jlink.cfg",
    16. "D:/IOT/STM32/File/openocd-0.10.0/scripts/target/stm32f4x.cfg"
    17. ],
    18. "searchDir": [],
    19. "runToEntryPoint": "main",
    20. "showDevDebugOutput": "none"
    21. }
    22. ]
    23. }

    可以点击image.png选择OpenOCDimage.png
    我的硬件是只有stm32f401Cub6jlink所以安装[jlink](https://bdbl-cm01.baidupcs.com/file/adffc0ecbb52bd47aa1ececd4426f756?bkt=en-82d2bca2fdceac3f82f2a5bd7904e2802c19272f15b03f35df9cc382d08f38527d0d2a9ccdbf1176&fid=3879021895-250528-822172901435206&time=1655206341&sign=FDTAXUbGERLQlBHSKfWqiu-DCb740ccc5511e5e8fedcff06b081203-ezj4PdHDky6R%2FNteVthnNBF%2FVgM%3D&to=401&size=29558340&sta_dx=29558340&sta_cs=1746&sta_ft=rar&sta_ct=7&sta_mt=7&fm2=MH%2CYangquan%2CAnywhere%2C%2Czhejiang%2Ccmnet&ctime=1543474016&mtime=1551493908&resv0=-1&resv1=0&resv2=rlim&resv3=5&resv4=29558340&vuk=915505575&iv=0&htype=&randtype=&tkbind_id=0&newver=1&newfm=1&secfm=1&flow_ver=3&pkey=en-bfa69ea03be8e5b8220ea8e745a0e8928775fec769ecbe844ab05d9149b6159b4895ad832cca34a8&sl=76480590&expires=8h&rt=sh&r=541797778&vbdid=3657023237&fin=J-LINK+OB%E5%85%A8%E5%A5%97%E8%B5%84%E6%96%99+%287%29.rar&fn=J-LINK+OB%E5%85%A8%E5%A5%97%E8%B5%84%E6%96%99+%287%29.rar&rtype=1&dp-logid=363740521003973650&dp-callid=0.1&hps=1&tsl=80&csl=80&fsl=-1&csign=lT6leRbagniuWRYqLfs9iDZPkWU%3D&so=0&ut=6&uter=4&serv=0&uc=2789754620&ti=c88239d10beef4d200398560ac500198d3d34b41a2bb32c2&hflag=30&from_type=0&adg=c_368e90098e47e61699dff3fbfe57c94e&reqlabel=250528_f_c0be4048169bb66d4dedf9e61b9289eb_-1_bda5ce09562815d23f7cbdfab03d5578&by=themis&resvsflag=1-0-0-1-1-1)
    安装完成后我们打开终端->运行任务..->Build&Update(自己取的名字)
    如果失败,错误信息是J-link not found的话安装zadig(win版)执行.exe文件后
    找不到j-link就点击,图上的List All Devives
    image.png
    之后就可以选择了,会发现我们的Driverj-link我们就点击Relpace Driver
    之后会变成
    image.png
    就可以在vscode上执行Build&Update
    不成功可以复制安装目录\openocd-0.10.0\scripts\interface\jlink.cfg到当前文件,修改名为jlink-swd.cfg

    1. #
    2. # SEGGER J-Link
    3. #
    4. # http://www.segger.com/jlink.html
    5. #
    6. interface jlink
    7. # The serial number can be used to select a specific device in case more than
    8. # one is connected to the host.
    9. #
    10. # Example: Select J-Link with serial number 123456789
    11. #
    12. # jlink serial 123456789
    13. # adapter driver jlink
    14. transport select swd

    出现
    image.png
    说明安装成功,使用的STM32F401CUB6最小系统板上的LED等开始闪烁
    符: STM32F401CUB6的原理图
    image.png