關(guān)于stm32cubeMX與Clion使用時(shí)的移植操作
1.使用Clion時(shí)需要添加相關(guān)的配置
使用的時(shí)候需要添加插件:
1.首先是cmake使用cmake作為編譯管理器
3.cfg文件,因?yàn)樵撐募窍螺d到板子上的時(shí)候需要使用的下載調(diào)用配置文件
下圖是一個(gè)使用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
文件移植時(shí)主要是要注意在cmakelist.txt文件中添加相關(guān)配置的問(wèn)題

首先找到include_directories()然后選擇直接在后面添加文件夾的名字
然后是到這個(gè)file中添加文件夾里面的文件比如說(shuō)這里是key文件夾下的所有文件

3.移植時(shí)報(bào)錯(cuò)的問(wèn)題
1.添加之后如果出現(xiàn)一些問(wèn)題比如說(shuō)和cubeMX的引腳配置有些沖突的話可以選擇在key.h的文件的引腳配中注釋掉或者選擇使用static,在函數(shù)的前面加上static可以實(shí)現(xiàn)同名函數(shù)在編譯中不報(bào)錯(cuò)。
2.如果出現(xiàn)一些一些在keli中不報(bào)錯(cuò)而在clion中報(bào)錯(cuò)的關(guān)鍵字,比如u8可以使用ctrl+F和ctrl+R進(jìn)行替換u8替換為char(或者使用uin8_t)
3.當(dāng)然我個(gè)人更加建議不要移植stm32的sys.h文件你可以自己編寫一個(gè)sys.h文件使用typedef進(jìn)行重新定義
//
// 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
使用該代碼的那么在移植的時(shí)候就可以輕松實(shí)現(xiàn)移植不再需要對(duì)變量進(jìn)行更改
使用Clion的時(shí)候創(chuàng)建stm32項(xiàng)目的時(shí)候不可避免的是會(huì)遇到使用串口Usart的問(wèn)題如果一味的使用HAL_UART_Transmit()函數(shù)的話顯得很不方便那么解決辦法是什么呢??
方法是重寫printf函數(shù)代碼如下:
#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;
}
但是考慮到每次都需要重寫這該如何是好?當(dāng)然是模板啦??!
打開(kāi)設(shè)置->編輯器->實(shí)時(shí)模板->C/C++->點(diǎn)擊旁邊的+號(hào)->下方的縮寫該名字->描述該模板->模板文本(將你的文本粘貼進(jìn)去)->點(diǎn)擊下面的更改勾選C然后點(diǎn)擊應(yīng)用即可。

然后在你的主函數(shù)中使用#include<stdio.h>輸入的定義的縮寫名字就可以實(shí)現(xiàn)對(duì)這個(gè)模板的快速書寫


可以從這些圖中發(fā)現(xiàn)已經(jīng)定義成功燒錄在while(1){}中使用printf();函數(shù)就可以實(shí)現(xiàn)串口輸出了。
