STM32Cube MCU Full Package
的核心定义部分, 在Github上的仓库地址: https://github.com/STMicroelectronics/cmsis_device_f4CMSIS Core
和Full MCU package
的对应关系在README.md的表格中, 现在最新的是v2.6.7, 对应的完整库版本为v1.26.2Standard peripherals library
不兼容, 后者已经不再更新, 最高版本到1.8.0综上, STM32F4的CMSIS环境下是没有可用的标准外设库(Standard peripherals library)的, 尝试过用1.8.0的标准外设库, 编译有不少错误, 所以用这个开发的话
这个方式相对比较简单了, 默认方式创建就可以
首先是 platformio.ini, 这个文件的内容如下, 一个项目里可以有多个env, 可以指定一个默认的, 在使用快捷键时, 会执行默认env的编译和写入. upload_protocol 用于指定不同的写入方式
[env:stm32f401cc]
platform = ststm32
board = genericSTM32F401CC
framework = stm32cube
upload_protocol = stlink
其次是 .vscode/c_cpp_properties.json, 这个文件很重要, 因为任何 include 的错误, 都可以在这里检查. 这个文件是 PlatformIO 自动生成的, 所以不需要去改它, 如果发现你修改了platformio.ini 后它没有更新, 重新打开 VS Code 就可以了.
闪灯例子, 在src目录下创建 main.c, 内容如下
#include "stm32f4xx_hal.h"
#define LED_PIN GPIO_PIN_13 // 指定PIN
#define LED_GPIO_PORT GPIOC // 指定IO
#define LED_GPIO_CLK_ENABLE() __HAL_RCC_GPIOC_CLK_ENABLE() // 指定启用时钟的IO
void LED_Init();
int main(void) {
HAL_Init();
LED_Init();
while (1)
{
HAL_GPIO_TogglePin(LED_GPIO_PORT, LED_PIN);
HAL_Delay(1000);
}
}
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();
}
编译, 使用stlink连接stm32f401的开发板, 然后写入
原文:https://www.cnblogs.com/milton/p/15260805.html