欢迎光临散文网 会员登陆 & 注册

关于stm32cubeMX与Clion使用时的移植操作

2023-03-13 13:01 作者:从小就叫小天才  | 我要投稿

1.使用Clion时需要添加相关的配置

使用的时候需要添加插件:

1.首先是cmake使用cmake作为编译管理器

2.是使用openOCD,该文件的作用是使其实现stm32的板子的管理使用

3.cfg文件,因为该文件是下载到板子上的时候需要使用的下载调用配置文件

下图是一个使用st_link的为stm32l4系列板子使用的.cfg文件

# choose st-link/j-link/dap-link etc.

#adapter driver cmsis-dap

#transport select swd

source [find interface/stlink.cfg]

transport select hla_swd

#source [find target/stm32f1x.cfg]

source [find target/stm32L4x.cfg]

# download speed = 10MHz

adapter speed 10000

2.关于clion软件开发stm32时的文件移植问题

文件移植时主要是要注意在cmakelist.txt文件中添加相关配置的问题

添加目标文件夹


首先找到include_directories()然后选择直接在后面添加文件夹的名字

然后是到这个file中添加文件夹里面的文件比如说这里是key文件夹下的所有文件

添加目标文件夹下的文件


3.移植时报错的问题

1.添加之后如果出现一些问题比如说和cubeMX的引脚配置有些冲突的话可以选择在key.h的文件的引脚配中注释掉或者选择使用static,在函数的前面加上static可以实现同名函数在编译中不报错。

2.如果出现一些一些在keli中不报错而在clion中报错的关键字,比如u8可以使用ctrl+F和ctrl+R进行替换u8替换为char(或者使用uin8_t)

3.当然我个人更加建议不要移植stm32的sys.h文件你可以自己编写一个sys.h文件使用typedef进行重新定义

//

// Created by hello on 2023-03-02.

//


#ifndef DGL_SYS_H

#define DGL_SYS_H


typedef char u8;

typedef short u16;

typedef int u32;


#endif //DGL_SYS_H

使用该代码的那么在移植的时候就可以轻松实现移植不再需要对变量进行更改


4.关于串口发送的printf重写的方法

使用Clion的时候创建stm32项目的时候不可避免的是会遇到使用串口Usart的问题如果一味的使用HAL_UART_Transmit()函数的话显得很不方便那么解决办法是什么呢??

方法是重写printf函数代码如下:

#ifdef __GNUC__
 /* With GCC/RAISONANCE, small printf (option LD Linker->Libraries->Small printf
    set to 'Yes') calls __io_putchar() */
 #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
 #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */
/**
 * @brief  Retargets the C library printf function to the USART.
 * @param  None
 * @retval None
 */
PUTCHAR_PROTOTYPE
{
 /* Place your implementation of fputc here */
 /* e.g. write a character to the EVAL_COM1 and Loop until the end of transmission */
 HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 0xFFFF);

 return ch;
}

但是考虑到每次都需要重写这该如何是好?当然是模板啦!!

打开设置->编辑器->实时模板->C/C++->点击旁边的+号->下方的缩写该名字->描述该模板->模板文本(将你的文本粘贴进去)->点击下面的更改勾选C然后点击应用即可。


在更改中勾选C

然后在你的主函数中使用#include<stdio.h>输入的定义的缩写名字就可以实现对这个模板的快速书写


使用定义的缩写字
通过模板直接生成

可以从这些图中发现已经定义成功烧录在while(1){}中使用printf();函数就可以实现串口输出了。


关于stm32cubeMX与Clion使用时的移植操作的评论 (共 条)

分享到微博请遵守国家法律