你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

使用VSC调试STM32

[复制链接]
wofei1314 发布时间:2017-9-3 00:52
经过几天的摸索(是我自己愚钝),终于实现了使用VSC调试,实例程序是点灯(菜鸟的第一课是不是永远是点灯啊,)....

废话不多说,下面开始本次探索的简单介绍,不详细或者遗漏的地方,需要等朋友跟帖,我会把我知道的分享给大家:)

第一步,下载安装VS Code,不知道的同学问度娘,我这里就不啰嗦了,直接附上官网下载地址
点我下载 X64 1.15.1  其它版本请移步官网根据需求下载

第二步,安装PlatformIO IDE,具体过程,先打开vscode,然后点插件->搜索->安装
jc1.jpg

第三步,重启VSC,然后就可以建立工程了,在本地任意位置新建文件夹(也可以是已经存在的,测试嘛,最好是空文件夹),然后记录路径
使用VSC->文件->打开文件夹

第四步,使用快捷键 ctrl+alt+i  初始化目录

第五步,选择一个已经存在的板子,我是自己画的  单片机型号是STM32F072C8(搜我的帖子,开源串口调试工具),就是这块板子,但Platform不会有它的,所以我选择的是nucleo_f072rb

第六步、新建文件,在src文件夹路径下右键,新建文件main.c
jc2.jpg

第七步、打开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(&eriphClkInit) != HAL_OK)
  {
    //_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启动

jc3.jpg

可以单步调试,可以F5运行,断点会显示在左侧

深夜发帖,有些困,有的地方写的不好,请大家谅解,有问题跟帖....





收藏 2 评论16 发布时间:2017-9-3 00:52

举报

16个回答
kylongmu 回答时间:2017-9-4 17:19:43
本帖最后由 kylongmu 于 2017-9-4 17:25 编辑

今天跟踪试验了一把:
无法打开“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
国内用户洗了睡吧,就算你交得起钱也会被墙,开发时还得自己维护整个工程文件。
wofei1314 回答时间:2017-9-5 09:10:31
kylongmu 发表于 2017-9-4 17:19
今天跟踪试验了一把:
无法打开“PIO Home”: Could not start PIO Home server: Error: timeout。
又是被 ...

你看的好详细,我都没发现收费...

说来惭愧啊...

看了以后可能只能用VSC编辑了

不知道插件开发难不难,要是自己写个插件调用gcc编译的话就好了
wofei1314 回答时间:2017-9-13 10:34:41
any012 发表于 2017-9-13 09:44
http://platformio.org/pricing
社区版不收费吧,9美元/月的是基本版。

我就是探索了下,社区版本有限制,现在又更新了,反正多了一个选择就是...
wofei1314 回答时间:2017-9-3 00:54:18
本帖最后由 wofei1314 于 2017-9-3 01:04 编辑

2楼留给自己,
附上完整工程    platformTest.rar (11.69 MB, 下载次数: 72)
@乔木 回答时间:2017-9-3 08:06:46
值得学习
Paderboy 回答时间:2017-9-3 08:49:08
帅。。。。
epochal 回答时间:2017-9-3 09:35:39
谢谢分享!
kylongmu 回答时间:2017-9-3 22:43:46
不错,等待持续进化。
五哥1 回答时间:2017-9-4 00:29:50
值得学习
andey 回答时间:2017-9-4 13:09:09
提示: 作者被禁止或删除 内容自动屏蔽
any012 回答时间:2017-9-4 13:44:32
额,需要电脑上有MDK软件吗?
wofei1314 回答时间:2017-9-4 13:57:19
any012 发表于 2017-9-4 13:44
额,需要电脑上有MDK软件吗?

不需要,只要VSC+plarformIO IDE插件和STLink驱动或者Jlink驱动...
harvardx 回答时间:2017-9-4 14:39:06
楼主最近在qqqun 和jianshu都推广甚多.. 支持一下vsf  ,不觉明历
wofei1314 回答时间:2017-9-4 15:33:30
harvardx 发表于 2017-9-4 14:39
楼主最近在qqqun 和jianshu都推广甚多.. 支持一下vsf  ,不觉明历

被你发现了...
反派小智 回答时间:2017-9-6 08:47:13
谢谢分享,这个不错
12下一页

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版