
经过几天的摸索(是我自己愚钝),终于实现了使用VSC调试,实例程序是点灯(菜鸟的第一课是不是永远是点灯啊,![]() 废话不多说,下面开始本次探索的简单介绍,不详细或者遗漏的地方,需要等朋友跟帖,我会把我知道的分享给大家:) 第一步,下载安装VS Code,不知道的同学问度娘,我这里就不啰嗦了,直接附上官网下载地址 点我下载 X64 1.15.1 其它版本请移步官网根据需求下载 第二步,安装PlatformIO IDE,具体过程,先打开vscode,然后点插件->搜索->安装 ![]() 第三步,重启VSC,然后就可以建立工程了,在本地任意位置新建文件夹(也可以是已经存在的,测试嘛,最好是空文件夹),然后记录路径 使用VSC->文件->打开文件夹 第四步,使用快捷键 ctrl+alt+i 初始化目录 第五步,选择一个已经存在的板子,我是自己画的 单片机型号是STM32F072C8(搜我的帖子,开源串口调试工具),就是这块板子,但Platform不会有它的,所以我选择的是nucleo_f072rb 第六步、新建文件,在src文件夹路径下右键,新建文件main.c ![]() 第七步、打开main.c,添加代码 #include "stm32f0xx_hal.h" #define LED_PIN GPIO_PIN_13 #define LED_GPIO_PORT GPIOC #define LED_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE() void LED_Init(); int main(void) { HAL_Init(); SystemClock_Config(); LED_Init(); while (1) { HAL_GPIO_TogglePin(LED_GPIO_PORT, LED_PIN); HAL_Delay(1000); } } /** System Clock Configuration */ void SystemClock_Config(void) { RCC_OscInitTypeDef RCC_OscInitStruct; RCC_ClkInitTypeDef RCC_ClkInitStruct; RCC_PeriphCLKInitTypeDef PeriphClkInit; /**Initializes the CPU, AHB and APB busses clocks */ RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_HSI48; RCC_OscInitStruct.HSI48State = RCC_HSI48_ON; RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE; if (HAL_RCC_OscConfig(&RCC_OscInitStruct) != HAL_OK) { //_Error_Handler(__FILE__, __LINE__); } /**Initializes the CPU, AHB and APB busses clocks */ RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_HCLK|RCC_CLOCKTYPE_SYSCLK |RCC_CLOCKTYPE_PCLK1; RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_HSI48; RCC_ClkInitStruct.AHBCLKDivider = RCC_SYSCLK_DIV1; RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV1; if (HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_1) != HAL_OK) { //_Error_Handler(__FILE__, __LINE__); } PeriphClkInit.PeriphClockSelection = RCC_PERIPHCLK_USB|RCC_PERIPHCLK_USART1 |RCC_PERIPHCLK_USART2; PeriphClkInit.Usart1ClockSelection = RCC_USART1CLKSOURCE_PCLK1; PeriphClkInit.Usart2ClockSelection = RCC_USART2CLKSOURCE_PCLK1; PeriphClkInit.UsbClockSelection = RCC_USBCLKSOURCE_HSI48; if (HAL_RCCEx_PeriphCLKConfig(& ![]() { //_Error_Handler(__FILE__, __LINE__); } /**Configure the Systick interrupt time */ HAL_SYSTICK_Config(HAL_RCC_GetHCLKFreq()/1000); /**Configure the Systick */ HAL_SYSTICK_CLKSourceConfig(SYSTICK_CLKSOURCE_HCLK); /* SysTick_IRQn interrupt configuration */ HAL_NVIC_SetPriority(SysTick_IRQn, 0, 0); } void LED_Init() { LED_GPIO_CLK_ENABLE(); GPIO_InitTypeDef GPIO_InitStruct; GPIO_InitStruct.Pin = LED_PIN; GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP; GPIO_InitStruct.Pull = GPIO_PULLUP; GPIO_InitStruct.Speed = GPIO_SPEED_HIGH; HAL_GPIO_Init(LED_GPIO_PORT, &GPIO_InitStruct); } void SysTick_Handler(void) { HAL_IncTick(); } /** * @brief This function handles Hard fault interrupt. */ void HardFault_Handler(void) { /* USER CODE BEGIN HardFault_IRQn 0 */ /* USER CODE END HardFault_IRQn 0 */ while (1) { } /* USER CODE BEGIN HardFault_IRQn 1 */ /* USER CODE END HardFault_IRQn 1 */ } 第八步、修改Platform.ini 配置文件,设置Jlink仿真器 [env:jlink_debug_and_upload] platform = ststm32 framework = stm32cube board = nucleo_f072rb debug_tool = custom debug_port = :2331 debug_server = JlinkGDBServerCL -singlerun -if SWD -select USB -port 2331 -device STM32F072c8 第九步、编译文件,使用快捷键 ctrl+alt+b 编译,编译成功,会有提示 我只截取最下面一部分 Calculating size .pioenvs\jlink_debug_and_upload\firmware.elf Building .pioenvs\jlink_debug_and_upload\firmware.bin text data bss dec hex filename 3852 1080 1568 6500 1964 .pioenvs\jlink_debug_and_upload\firmware.elf ============================================== [SUCCESS] Took 9.26 seconds ============================================== 第十步,调试,,快捷键 F5启动 ![]() 可以单步调试,可以F5运行,断点会显示在左侧 深夜发帖,有些困,有的地方写的不好,请大家谅解,有问题跟帖.... |
今天跟踪试验了一把:
无法打开“PIO Home”: Could not start PIO Home server: Error: timeout。
又是被墙,只能按楼主的快捷键组合操作,不能按官网的有菜单指导http://docs.platformio.org/en/latest/ide/vscode.html#quick-start
另外debug配置还得自己写J-Link参数,工程只能建立官网提供的板子。
开发者注意力都不在MCU功能上,而是维护工程文件上面。
PIO的价格,基本用户每月每人$10。http://platformio.org/pricing
国内用户洗了睡吧,就算你交得起钱也会被墙,开发时还得自己维护整个工程文件。
你看的好详细,我都没发现收费...
说来惭愧啊...
看了以后可能只能用VSC编辑了
不知道插件开发难不难,要是自己写个插件调用gcc编译的话就好了
我就是探索了下,社区版本有限制,现在又更新了,反正多了一个选择就是...
2楼留给自己,
附上完整工程
不需要,只要VSC+plarformIO IDE插件和STLink驱动或者Jlink驱动...
被你发现了...