|
源码工程
经过几天的摸索(是我自己愚钝),终于实现了使用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(&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启动
可以单步调试,可以F5运行,断点会显示在左侧
深夜发帖,有些困,有的地方写的不好,请大家谅解,有问题跟帖.... |
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x
|