Clion&&STM32环境配置教程(优雅开发STM32)

Clion&&STM32环境配置

1.环境及所需工具

软件环境:

  • Windows 10、11
  • STM32CubeMX
  • Clion
  • MinGW
  • OpenOCD
  • arm-none-eabi-gcc

硬件环境:

  • STM32F407VGT6
  • ST-Link下载器

工具安装

  1. STM32CubeMX
    这个正常去官网下载最新版的安装就行了:https://www.st.com/en/development-tools/stm32cubemx.html

    或者在我的阿里云盘下载:SetupSTM32CubeMX-6.8.1-Win.exe https://www.aliyundrive.com/s/JcKhj7FD4nJ 提取码: up88

  2. OpenOCD
    OpenOCD是用于对STM32进行下载仿真的工具,是一个开源软件包,Windows版本下从这里下载,下载好解压到一个目录就行。

    OpenOCD-20230202-0.12.0 https://www.aliyundrive.com/s/mjmWrYPLUav 提取码: 80xh

  3. MingW

    下载地址:MinGW - Minimalist GNU for Windows download | SourceForge.net

4.arm-none-eabi-gcc
Windows到这里下载:https://developer.arm.com/open-source/gnu-toolchain/gnu-rm/downloads ,选择ZIP压缩包形式的:

(最新的Clion、Clion下载网址以及破解网站教程、OpenCd、以及stlink的配置)这些都能到我的阿里云网盘下载:

Clion&&stm32 https://www.aliyundrive.com/s/dqkys6yFNK3 提取码: tj47

(由于云盘限制MinGW和arm-none-eabi-gcc无法分享)

我的建议是把这些所有工具链放到同一路径下方便添加路径!!!

环境配置

img

aaa

这里的路径可以这样操作
在这里插入图片描述

在这里插入图片描述

ccc

Clion配置

中文设置

我的界面是中文是因为在插件下载了中文的插件

在这里插入图片描述
在这里插入图片描述

重启之后就会变成中文了

在这里插入图片描述

工具链配置

找到对应编译器路径

ddd

eee

CMake配置

fff

开发工具配置(STM32CubeMx、OpenOCD)

ggg

可以在Clion里创建CubeMx的工程也可以在CubeMx里建好后使用Clion打开(我个人觉得后者更舒服)

这里演示的是Clion里创建工程然后再打开CubeMx进行修改

在Clion创建STM32CubeMx工程

在这里插入图片描述

最后点击创建

img

这里点击跳过(这里是相应板子的配置)

工程默认创建的是STM32F030的芯片 如果需要更改可以通过打开CubeMx重新选择芯片

image-20230325131908214

CubeMx里面的配置需要自己修改这里就不多赘述了
在这里插入图片描述

IIII

jjj

kkk

lll

回到Clion跳过即可,可以看到已经变成F4了

CubeMx创建工程使用Clion打开

cubeMx配置内容就不多赘述了直接到工程管理界面
在这里插入图片描述

在这里插入图片描述

弹出提示框我们直接打开文件目录就好

在这里插入图片描述

Edit whith Clion

在这里插入图片描述

跳过即可

在这里插入图片描述

Config文件

Config文件可以这样自己添加也可以使用我网盘里的哪个config文件(只适用于STM32F407VGTx使用STLink下载)

mmm

nnn

名字是你自己下载器的名字

文件里内容如下:

# choose st-link/j-link/dap-link etc.
#adapter driver cmsis-dap
source [find interface/stlink.cfg]
#transport select swd
transport select hla_swd
#这里的stm32f4x.cfg对应的是你的板子的相应芯片型号而不是Link的
source [find target/stm32f4x.cfg]
# download speed = 10MHz
adapter speed 10000
编辑运行配置

ooo

添加一个配置(OpenCD)

ppp

qqq

rrr

sss

添加文件夹

比如我从其他地方拷贝了一个文件夹到当前工程路径下

image-20230325134919353

然后就会更新

image-20230325134948397

我们还需要在CMakeLists.txt里添加路径

image-20230325135155975

记得重新加载CmakeLists

image-20230325135253070

新版是这样

在这里插入图片描述

image-20230325140729695

现在就可以下到板子上了(可以写个LED闪烁的程序观察效果)

下载成功是这样的(虽然是红色但是确实是下载成功)

在这里插入图片描述

使用printf函数

需要添加以下两个文件

retarget.h
#ifndef _RETARGET_H__
#define _RETARGET_H__

#include "stm32f4xx_hal.h"
#include <sys/stat.h>
#include <stdio.h>

void RetargetInit(UART_HandleTypeDef *huart);

int _isatty(int fd);

int _write(int fd, char *ptr, int len);

int _close(int fd);

int _lseek(int fd, int ptr, int dir);

int _read(int fd, char *ptr, int len);

int _fstat(int fd, struct stat *st);

#endif //#ifndef _RETARGET_H__

retarget.c
#include "retarget.h"

#include <_ansi.h>
#include <_syslist.h>
#include <errno.h>
#include <sys/time.h>
#include <sys/times.h>
#include <retarget.h>
#include <stdint.h>

#if !defined(OS_USE_SEMIHOSTING)

#define STDIN_FILENO  0
#define STDOUT_FILENO 1
#define STDERR_FILENO 2

UART_HandleTypeDef *gHuart;

void RetargetInit(UART_HandleTypeDef *huart)
{
	gHuart = huart;

	/* Disable I/O buffering for STDOUT stream, so that
	 * chars are sent out as soon as they are printed. */
	setvbuf(stdout, NULL, _IONBF, 0);
}

int _isatty(int fd)
{
	if (fd >= STDIN_FILENO && fd <= STDERR_FILENO)
		return 1;

	errno = EBADF;
	return 0;
}

int _write(int fd, char *ptr, int len)
{
	HAL_StatusTypeDef hstatus;

	if (fd == STDOUT_FILENO || fd == STDERR_FILENO)
	{
		hstatus = HAL_UART_Transmit(gHuart, (uint8_t *) ptr, len, HAL_MAX_DELAY);
		if (hstatus == HAL_OK)
			return len;
		else
			return EIO;
	}
	errno = EBADF;
	return -1;
}

int _close(int fd)
{
	if (fd >= STDIN_FILENO && fd <= STDERR_FILENO)
		return 0;

	errno = EBADF;
	return -1;
}

int _lseek(int fd, int ptr, int dir)
{
	(void) fd;
	(void) ptr;
	(void) dir;

	errno = EBADF;
	return -1;
}

int _read(int fd, char *ptr, int len)
{
	HAL_StatusTypeDef hstatus;

	if (fd == STDIN_FILENO)
	{
		hstatus = HAL_UART_Receive(gHuart, (uint8_t *) ptr, 1, HAL_MAX_DELAY);
		if (hstatus == HAL_OK)
			return 1;
		else
			return EIO;
	}
	errno = EBADF;
	return -1;
}

int _fstat(int fd, struct stat *st)
{
	if (fd >= STDIN_FILENO && fd <= STDERR_FILENO)
	{
		st->st_mode = S_IFCHR;
		return 0;
	}

	errno = EBADF;
	return 0;
}

注意我们有几个函数和syscalls.c里的重复,所有需要注释掉syscalls.c里(路径一般在工程路径下的Core/Src里)的;这几个函数

	int _isatty(int fd)
    int _write(int fd, char *ptr, int len)
    int _close(int fd)
    int _lseek(int fd, int ptr, int dir)
    int _read(int fd, char *ptr, int len)
    int _fstat(int fd, struct stat *st)

只需要在main.c里添加如下代码即可

#include "retarget.h"

int main(void)
{
    RetargetInit(&huart1);
    
    while(1)
    {
        
        
    }
}
  • 6
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
配置CLion开发环境来进行STM32开发之前,首先需要准备好以下几个步骤: 1. 安装CLion: 首先,你需要下载并安装最新版本的CLion集成开发环境。 2. 安装插件:为了支持STM32开发,你需要在CLion中安装STM32插件。可以在CLion的插件市场中搜索并安装适合你的STM32插件。 3. 安装编译工具链:在进行STM32开发时,你需要安装适合的编译工具链。可以选择GNU ARM Embedded Toolchain作为编译工具链。你可以从其官方网站下载适合你操作系统的编译工具链,并按照它们的安装说明进行安装。 4. 配置编译器路径:在CLion配置编译器路径,以便CLion可以调用编译工具链来编译和构建STM32项目。你可以在CLion的设置中找到“Build, Execution, Deployment”选项,然后在“Toolchains”选项卡中配置编译器路径。 5. 创建STM32项目:在CLion中创建一个新的STM32项目。你可以选择使用STM32CubeMX来生成初始化代码,并将其导入到CLion项目中。或者,你也可以手动创建一个空白项目,并添加所需的STM32驱动文件和库。 6. 编写代码和调试:在CLion中编写你的STM32代码,并使用调试工具来调试你的代码。你可以配置调试器来连接到你的STM32开发板,并使用CLion的调试功能来监视和调试代码的执行。 请注意,以上步骤仅为一般指导,具体的配置步骤可能会因为不同的STM32开发板和工具链而有所不同。建议你参考相关的文档和资源,以获得更详细的指导和指令。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [[ESP32][环境配置]Clion配置ESP-IDF开发环境,支持编译下载和menucofig](https://blog.csdn.net/qq_38844263/article/details/123989779)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值