PlatformIO 添加芯片

简介

    使用过vscode的小伙伴都知道起功能非常好用,尤其是提供很多开源插件。这时候就想把他应用于嵌入式开发。方法一:就是直接下载arm编译工具等进行搭建,缺点是比较麻烦,好处是可以了解工作机制。方法二:就是采用目前流行的PlatformIO这个插件进行快速搭建。
    但是在使用这个插件时发现部分器件型号并没有,这时候就需要自己添加器件。本文主要就是介绍如何快速添加一个芯片型号,前提是这个芯片的产品线(其他类似型号)platformIO已经支持。
    因为目前手上有STM32L011K4T6的NUCLEO板子,所以一这颗型号进行说明和测试。

操作步骤

  1. 创建型号说明json文件
      首先在C:\Users\用户名.platformio\platforms\ststm32\boards目录中创建下图所示的文件,可以拷贝其他文件修改名称为"genericSTM32L011K4.json"
    在这里插入图片描述
  2. 修改创建的json文件
        其中svd是关于仿真的芯片寄存器信息等内容用于仿真时查看。存储位置:C:\Users\用户名.platformio\platforms\ststm32\misc\svd 文件夹中可以找到对应型号。
    Product_line 要注意不可以写错,否则编译会出现无法找打对应的.s文件,但是编译提示还是成功的,但是
    代码下载后无法运行。
 {
  "build": {
    "core": "stm32",
    "cpu": "cortex-m0plus",
    "extra_flags": "-DSTM32L011xx -DSTM32L1",
    "f_cpu": "32000000L",
    "mcu": "stm32l011k4t6",
    "product_line": "STM32L011xx",     
    "variant": "STM32L0xx/L011(D-E-F-G-K)3_L011(D-E-F-G-K)4"
  },
  "debug": {
    "jlink_device": "STM32L011K4",
    "openocd_target": "stm32l0",
    "svd_path": "STM32L0x1.svd"
  },
  "frameworks": [
    "arduino",
    "cmsis",
    "stm32cube",
    "libopencm3"
  ],
  "name": "STM32L011K4 (512B RAM. 16k Flash)",
  "upload": {
    "maximum_ram_size": 512,
    "maximum_size": 16384,
    "protocol": "serial",
    "protocols": [
      "blackmagic",
      "dfu",
      "jlink",
      "serial",
      "stlink"
    ]
  },
  "url": "https://www.st.com/en/microcontrollers-microprocessors/stm32l011k4.html",
  "vendor": "Generic"
}
  1. 创建工程
           启动vscode 的platformIo后就可以在里面搜索到刚刚添加的芯片
    在这里插入图片描述
  2. 编写测试代码
           下面的代码供参考,为了让代码篇幅小一点,删除时钟初始化等函数
#include "main.h"
static void MX_GPIO_Init(void);
static void MX_USART2_UART_Init(void);
int main(void)
{
 /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
    HAL_Init();
    MX_GPIO_Init();
    while (1)
    {
        /* USER CODE END WHILE */
        HAL_GPIO_WritePin(LD3_GPIO_Port, LD3_Pin, GPIO_PIN_RESET);
        HAL_Delay(300);
        HAL_GPIO_WritePin(LD3_GPIO_Port, LD3_Pin, GPIO_PIN_SET);
        HAL_Delay(300);
        /* USER CODE BEGIN 3 */
    }
    /* USER CODE END 3 */
}
/**
 * @brief GPIO Initialization Function
 * @param None
 * @retval None
 */
static void MX_GPIO_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct = {0};
    /* GPIO Ports Clock Enable */
    __HAL_RCC_GPIOC_CLK_ENABLE();
    __HAL_RCC_GPIOA_CLK_ENABLE();
    __HAL_RCC_GPIOB_CLK_ENABLE();

    /*Configure GPIO pin Output Level */
    HAL_GPIO_WritePin(LD3_GPIO_Port, LD3_Pin, GPIO_PIN_RESET);

    /*Configure GPIO pin : LD3_Pin */
    GPIO_InitStruct.Pin = LD3_Pin;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(LD3_GPIO_Port, &GPIO_InitStruct);
}
/**
 * @brief  This function is executed in case of error occurrence.
 * @retval None
 */
void Error_Handler(void)
{
    /* USER CODE BEGIN Error_Handler_Debug */
    /* User can add his own implementation to report the HAL error return state */
    __disable_irq();
    while (1)
    {
    }
    /* USER CODE END Error_Handler_Debug */
}
/************************ (C) COPYRIGHT STMicroelectronics *****END OF FILE****/
void SysTick_Handler(void)
{
    HAL_IncTick();
}

编译成功后会提示“SUCCESS
在这里插入图片描述

  1. 下载测试
           nuelo板子自带stlink仿真器。这里修改Platformio.ini设置.为了能调试启动文件,同时设置仿真端点为复位向量函数
[env:genericSTM32L011K4]
platform = ststm32
board = genericSTM32L011K4
framework = stm32cube
upload_protocol =stlink
build_flags = -g
debug_tool = stlink
debug_init_break = tbreak Reset_Handler

配置完成后启动调试可以正常进入,而且可以看到ADC等外设寄存器
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值