VSCODE+EIDE开发STM32


前言

EIDE: 是一款适用于 8051/STM8/Cortex-M/RISC-V 的单片机开发环境。能够在 vscode 上提供 8051/STM8/Cortex-M/RISC-V 项目的 开发, 编译, 烧录等功能
VSCODE+EIDE相较于KEIL类开发环境有开发环境统一,代码编辑和自动补全效果,路径包含,丰富的功能插件等优点


一、必要准备工作

  • WINDOWS 7 SP1 及以上
  • VSCODE
  • KEIL Uvision5
  • STM32Cube_FW_F1_V1.8.4或其他版本
  • STM32开发板

二、安装EIDE

安装EIDE

  • 配置EIDE
    配置EIDE

三、新建工程

新建一个空项目并选择CORTEX-M,将STM32Cube_FW_F1_V1.8.4软件包放到该工程根目录下,并将STM32Cube_FW_F1_V1.8.4/Drivers/STM32F1xx_HAL_Driver文件夹添加到工程中
新建工程

  • 修改STM32Cube_FW_F1_V1.8.4\Drivers\STM32F1xx_HAL_Driver\Inc内的模板文件
 	stm32f1xx_hal_conf_template改名为stm32f1xx_hal_conf
	stm32_assert_template改名为stm32_assert
  • 修改STM32Cube_FW_F1_V1.8.4\Drivers\STM32F1xx_HAL_Driver \Src内的模板文件
 	stm32f1xx_hal_msp_template改名为stm32f1xx_hal_msp
	stm32f1xx_hal_timebase_rtc_alarm_template改名为stm32f1xx_hal_timebase_rtc_alarm
	stm32f1xx_hal_timebase_tim_template改名为stm32f1xx_hal_timebase_tim

此时已经将ST官方提供的STM32F1系列软件开发包中的主要源代码添加进我们的工程,继续添加内核和芯片相关文件
将STM32Cube_FW_F1_V1.8.4\Drivers\CMSIS\Core\Include文件夹添加进工程中;

  • 删除STM32Cube_FW_F1_V1.8.4\Drivers\CMSIS\Device\ST\STM32F1xx\Include文件夹内的其他芯片型号的文件,仅保留以下文件
	stm32f1xx.h
	stm32f103xe.h
	system_stm32f1xx.h
  • 删除STM32Cube_FW_F1_V1.8.4\Drivers\CMSIS\Device\ST\STM32F1xx\Source
    Templates\arm文件夹内的其他芯片型号的文件,仅保留以下文件
	startup_stm32f103xe.s

四、配置工程编译参数和环境

  • 添加预定义参数添加预定义参数
  • 配置工具链
    配置工具链
  • 配置烧写参数
    配置烧写参数
    构建配置和项目设置中可根据需要对当前工程进行更加丰富详细的个性化配置

五、编辑main文件

#include "stm32f1xx_hal.h"

/*时钟配置,可参考官方软件包下的模板工程*/
void SystemClock_Config(void)
{
  RCC_ClkInitTypeDef clkinitstruct = {0};
  RCC_OscInitTypeDef oscinitstruct = {0};
  
  /* Enable HSE Oscillator and activate PLL with HSE as source */
  oscinitstruct.OscillatorType  = RCC_OSCILLATORTYPE_HSE;
  oscinitstruct.HSEState        = RCC_HSE_ON;
  oscinitstruct.HSEPredivValue  = RCC_HSE_PREDIV_DIV1;
  oscinitstruct.PLL.PLLState    = RCC_PLL_ON;
  oscinitstruct.PLL.PLLSource   = RCC_PLLSOURCE_HSE;
  oscinitstruct.PLL.PLLMUL      = RCC_PLL_MUL9;
  if (HAL_RCC_OscConfig(&oscinitstruct)!= HAL_OK)
  {
    /* Initialization Error */
    while(1);
  }

  /* Select PLL as system clock source and configure the HCLK, PCLK1 and PCLK2 
     clocks dividers */
  clkinitstruct.ClockType = (RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2);
  clkinitstruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
  clkinitstruct.AHBCLKDivider = RCC_SYSCLK_DIV1;
  clkinitstruct.APB2CLKDivider = RCC_HCLK_DIV1;
  clkinitstruct.APB1CLKDivider = RCC_HCLK_DIV2;  
  if (HAL_RCC_ClockConfig(&clkinitstruct, FLASH_LATENCY_2)!= HAL_OK)
  {
    /* Initialization Error */
    while(1);
  }
}

int main(void)
{
    /*******hal init*******/
    HAL_Init();

    /******clock init******/
    SystemClock_Config();

    /****add user code****/
    GPIO_InitTypeDef  GPIO_InitStruct=
    {
        .Pin   = GPIO_PIN_1,
        .Mode  = GPIO_MODE_OUTPUT_PP,
        .Pull  = GPIO_PULLUP,
        .Speed = GPIO_SPEED_FREQ_HIGH,
    };
    __HAL_RCC_GPIOB_CLK_ENABLE();
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);
    
	/*闪个灯*/
    while (1)
    {
        HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1);
        HAL_Delay(300);
    }
}

六、编译烧写

编译烧写


总结

对于STM系列芯片的基础工程同样可以由ST官方工具STM32CubeMX 直接生成,再使用VSCODE+EIDE将STM32CubeMX生成的文件包含进工程进行编辑,进而利用VSCODE强大的代码编辑、自动补全、路径包含及丰富插件等优势。本文之所以根据官方的开发软件包手动添加是为了给相同环境下开发别的芯片平台提供一个参考。

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值