首页 > 其他分享 >MAC下使用Clion软件进行STM32的HAL库的开发

MAC下使用Clion软件进行STM32的HAL库的开发

时间:2024-11-10 15:30:33浏览次数:1  
标签:文件 HAL int Clion huart1 STM32 编译 MAC CLion

1、准备的软件

(1)clion: 链接:https://www.jetbrains.com.cn/clion/
破解:方法可在某宝上去找。
(2)STM32CubeMX与ST_Link: 链接:https://www.st.com.cn/content/st_com/zh/stm32cubemx.html
img
mac电脑在安装的时候会出现上面的界面,依次安装即可。
(3)macOS的包管理器‌brew:打开终端输入:
/bin/zsh -c "$(curl -fsSL https://gitee.com/cunkai/HomebrewCN/raw/master/Homebrew.sh)"
(4)开放芯片调试器 OpenOCD:

brew install open-ocd
//输入以下命令显示版本号代表已安装成功
openocd -v

默认安装在/usr/local/Cellar/open-ocd/
(5)交叉编译工具链arm-none-eabi-gcc:
brew install --cask gcc-arm-embedded
以下命令显示版本号说明安装成功

arm-none-eabi-gcc -v
arm-none-eabi-gdb -v

(6)建议装个MAC软件商店的XCode。

2、配置CLion

打开Clion中的设置

选择在构建、执行、部署选项中查看工具链的设置。一般情况下,CLion会在默认中自动配置好环境,找的到C和C++的编译器。

我在这里直接寻找到C和C++的编译器所在的位置。

与window系统不同的是,这里不需要进行MinGW环境的配置。
然后再CMake栏下确认一下工具链是否正确:

至此CLion环境配置完成,可以创建STM32项目了。

3、在CLion中创建STM32工程

(1)创建CLion工程
打开CLion,点击新建项目,会出现以下界面。
img
选择stm32cunbemax,在桌面上新建个文件夹demo,之后所有的工程文件都保存在此文件夹中。
点击创建,demo文件中会生成一个.ioc文件,点击.ioc文件,会出现如下内容。
img
双击通过图中箭头所指的(通过说stm32cubemx),系统会自动打开stm32cubemx这个程序。
这里默认选中的芯片型号是STM32F030F4Px,可以在CubeMX中重新选择自己需要的芯片,一切操作都和使用Keil开发没有区别。
选择stm32f103c8t6芯片,可通过图形化界面配置所需的功能。本文配置引脚PC13输出以及串口1。
img
img
img
img
stm32f103c8t6的时钟树的配置如下:
img
最需注意的是,就是在下面的设置中项目名称一定要和在CLion中建立的一致,这样生成的工程文件才会覆盖Clion中的文件,否则会另外生成一个文件夹,Clion就无法读取了。
img
img
每次修改完点软件右上角的Generate之后,会自动出现弹窗,选择yes
img
之后会出现以下弹窗:
img
弹窗直接点Close,Clion里面会自动更新文件。
打开后台运行的CLion,开始的界面里会出现一个配置文件的小窗口
img
选择配置文件中stm32f1,之后点击复制到项目并使用。
Cmake会自动编译工程,在CLion底栏的CMake选项卡中如果没有提示错误,说明工程配置就没问题了
img
若CMake没有自动编译,且CLion底栏的CMake选项卡没有任何消息,左侧文件里没有出现camke-bulid-debug。将CLion重启,可能解决此问题。
顶栏右部的这三个图标分别是编译、下载、调试:
img
点击编译,CLion底栏的消息选项卡可以看到编译输出。
img

4、烧录程序 & 在线调试

在左侧文件夹里打开stm32f103c8_blue_pill.cfg文件,将里面的内容替换为

source [find interface/stlink.cfg]
transport select hla_swd
source [find target/stm32f1x.cfg]
adapter speed 10000

之后选择编辑配置
img
在弹出的界面添加新配置,选择OpenOCD
img
在OpenOCD配置文件中,可执行的二进制文件,选择Cmake编译后的二进制文件;面板文件选择,demo文件夹里的stm32f103c8_blue_pill.cfg文件。配置结果如下所示:
img
设置好配置文件之后,就可以点击下载或者调试按钮进行下载和在线调试了。
最后说明一下,CLion中组织编译规则都是基于CMakeLists.txt文件的,若要再新建的文件夹添加.c和.h文件,那么在CMakeLists.txt文件里面添加源码目录和include文件夹的路径就行了:
img

5、其他问题

printf重定向问题
在Keil里面为了使用printf函数我们需要重定向fputc函数:

int fputc (int ch, FILE *f)
{
    (void)HAL_UART_Transmit(&huart1, (uint8_t *)&ch, 1, 1000);
    return ch;
}

其中的FILE定义在stdio.h头文件中,所以需要在项目中包含这个头文件,但是经过测试发现,Keil里面包含的是MDK\ARM\ARMCC\include这个目录下的stdio.h,而在Clion中是不会链接到这个文件的。因此如果在Clion中也按之前的方法进行重定向,会发现printf没有任何输出。
在Clion中链接的是/ Applications/ ArmGNUToolchain/ 13.3.rel1/ arm-none-eabi/ arm-none-eabi/ include/ stdio. h里面的stdio.h,如果仍然想使用printf函数功能,则需要在文件usart.c添加如下程序:

//redirect _read to huart1,necessary for scanf、getchar
int _read(int file, char *ptr, int len)
{
    /* receive data from serial huart1 */
    HAL_UART_Receive(&huart1, ptr, len,1000);
    return (len);
}

//redirect _write to huart1,necessary for printf
int _write(int file, char *ptr, int len)
{
    /* send data to serial huart1 */
    HAL_UART_Transmit(&huart1, ptr, len, 1000);
    return len;
}

但值得注意的是只能使用printf函数来输出串口数据,但scanf函数在stm32f103c8t6中运行还是有问题,会出现FLASH文件过大报错,之后我会继续找解决办法。

标签:文件,HAL,int,Clion,huart1,STM32,编译,MAC,CLion
From: https://www.cnblogs.com/jiatai-blogs/p/18537861

相关文章

  • 基于STM32的温室自主灌溉系统(论文+源码)
    1.总体方案设计本课题为基于STM32的温室自主灌溉系统,通过查阅多种文献和的设计了如图2.1所示的温室自主灌溉系统总体架构,整个系统在器件上包括了主控制器STM32F103,温度传感器DS18B20,土壤湿度传感器YL-69,光敏电阻,显示器LCD1602,继电器,LED灯,蜂鸣器,水泵,按键等等。在功能上,实现了......
  • stm32以太网接口:MII和RMII
    前言使用stm32和lwip进行网络通信开发时,实现结构如下:而MII和RMII就是stm32与PHY芯片之间的通信接口,类似于I2C、UART等。stm32以太网模块有专用的DMA控制器,通过AHB接口将以太网内核和存储器相连。数据发送时,先将数据从存储器以DMA传输到TXFIFO中进行缓冲,然后由MAC内核......
  • 通过C++跨平台的预编译宏来区分不同的操作系统:Win32/Win64/Unix/Linux/MacOS
    因为C++具有跨平台的特性,所以有些需求一套代码就多端使用,比如我最近在学习的OpenGLES。但是,不同平台还是具有一定差异性,所以我们首先得判断出是什么平台?比如iOS系统和Android系统。那么如何判断呢?我们接着往下看!要检查C或C代码中主机的操作系统,我们需要检查编......
  • VMware ESXi 6.7U3u macOS Unlocker & OEM BIOS 2.7 集成 Realtek 网卡驱动和 NVMe 驱
    VMwareESXi6.7U3umacOSUnlocker&OEMBIOS2.7集成Realtek网卡驱动和NVMe驱动(集成驱动版)此版本解决的问题:VMwareHostClient无法将现有虚拟磁盘(VMDK)附加到虚拟机请访问原文链接:https://sysin.org/blog/vmware-esxi-6-sysin/,查看最新版。原创作品,转载请保留出......
  • macOS nginx 编译安装教程
    nginx有多种安装方式方式一:可以通过包管理器(homebrew)安装,安装较为简单brewinstallnginx即可,使用方式查看brewinfonginx方式二:通过源码编译的方式,本篇主要介绍这种安装方式源码编译安装1、打卡官方下载页面https://nginx.org/en/download.html选择稳定版本(Stableversi......
  • halcon中将xld轮廓或者region区域绘制在图像上并保存
    1)单通道图像的绘制draw_circle(WindowHandle,Row,Column,Radius)gen_circle(Circle,Row,Column,Radius)paint_region(Circle,Image,ImageR,0,'fill')paint_region(Circle,Image,ImageG,255,'fill')paint_region(Circle,Image,ImageB,......
  • 终端仿真软件:SecureCRT macOS+Windows电脑安装包
    SecureCRT是一款广受好评的终端仿真软件,专为IT专业人员设计。它支持SSH、Telnet、RLogin等多种协议,提供安全的远程访问功能。用户可以通过该软件安全地连接到远程服务器,进行命令行操作、文件传输等任务。SecureCRT还具备脚本自动化、会话管理、多窗口操作等核心功能,其稳定性和安......
  • STM32基础篇:SYSTICK(系统滴答)
    systick概述Cortex-M处理器内部包含了一个简单的定时器系统嘀嗒(SysTick)。因为所有的Cortex-M芯片都带有这个定时器,软件在不同Cortex-M器件间的移植工作就得以化简。该定时器的时钟源可以是内部时钟(FCLK,CM3上的自由运行时钟),或者是外部时钟(处理器上的STCLK信号)。不过,STCLK的具体......
  • STM32基础
    一、GPIO主要知识点:1、通用GPIO概述2、GPIO的工作方式3、GPIO的相关寄存器4、GPIO的应用5、GPIO的初始化代码1、GPIO概述:GPIO是通用输入/输出的简称,是单片机和外界通讯的必要窗口。换句话来说,GPIO就像我们的计算机的显示器和键盘,我们对单片机的读写操作就是通过I/O口......
  • STM32+阿里云+ESP8266+MQTT+DHT11
    一、阿里云平台环境搭建注册完账号以后,找到控制台->物联网平台。    1.创建一个公共实例,若该实例有ID则为新公共实例2.创建一个产品[如何在物联网平台创建产品_物联网平台(IoT)-阿里云帮助中心(aliyun.com)](https://help.aliyun.com/zh/iot/user-guide/create......