在Mac中开发STM32单片机

2023-05-16

想要在Mac下开发32单片机,又不想装虚拟机的同学可以看看

使用工具:CLion(JetBrains家族一员)、STM32CubeMX(配置芯片,生成初始化代码,工程架构)、OpenOCD、ARM toolchain(编译器)
开发板我使用的是正点原子的STM32F103ZET6战舰V3

一、下载CLion

https://www.jetbrains.com/clion/
(一、二下载过程中可以先去下载三、四)

二、下载STM32CubeMX

https://www.st.com/en/development-tools/stm32cubemx.html#get-software
访问不了或者下载很慢就用手机热点
在这里插入图片描述
这里需要邮箱验证一下
然后打开压缩包(打不开是因为没有解压缩zip的软件,直接去App Store下一个免费的就行了,如FileZilla Pro)
在这里插入图片描述
是无法直接执行安装的,需要用命令去安装
【sudo java -jar XXXX/SetupSTM32CubeMX-6.0.1.exe】
记得路径换成自己的
然后一路next就好了

三、安装其他工具

下载直接使用homebrew (未安装的请看)

OpenOCD:
【brew install open-ocd】

ARM toolchain:
【brew tap ArmMbed/homebrew-formulae】
【brew install arm-none-eabi-gcc】
执行后,测试下是否安装成功
【arm-none-eabi-gcc -v】
有信息输出就代表成功了

四、配置CLion

进入首选项
在这里插入图片描述
正常来说会自动配置好,不行就重启下CLion,还不行就自己找路径配
然后两个都点击Test都点击下,都正常就可以

五、创建工程

选择创建STM32CubeMX工程和名称
在这里插入图片描述
然后进入工程可以看到一个.ioc文件
在这里插入图片描述
点击右边的Open with STM32CubeMX,会自动打开STM32CubeMX

六、到STM32CubeMX配置芯片信息

在这里插入图片描述
这里默认使用的是STM32F030F4Px 要改成自己使用的型号,点红框框后弹出下面的图
在这里插入图片描述
选择好型号后,点击开始工程,进行下面的配置
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里1的工程名需要和CLion创建的工程名一致
2的路径也需要和CLoin工程的路径保持一致
3也有说选择SW4STM32的,但是我试了会编译失败,换成这个就行。
然后点击4,生成代码,弹框选择yes,覆盖。
然后选择Close就好了

七、回到CLion完成工程创建

回到CLion会弹出开发板配置框框
在这里插入图片描述
没有也没关系,在这里可以找到在这里插入图片描述
在这里插入图片描述
选择好对应的开发板(不知道的话就选类似的就好了,例如我直接选F103的)
点击复制到工程并使用,然后点击应用

工程就出现了下面的配置文件
在这里插入图片描述
因为正点原子使用的是STlink V2 所以把-1去掉,变成V2就好了
然后点击右上角的小锤子编译下,能通过就好了

如果编译失败,出现下面的情况
在这里插入图片描述
就把工程删了,老方法重新创建一下就好了。。。。。我找了好久的原因,也不知道为什么会这样。有知道的可以评论回答下。。。。。

八、编写程序和下载

接下来就可以编写程序了,刚好这里的GPB5引脚接了一个LED灯,这里就写的跑马灯Demo

先在初始化GPIO里把 GPB5始能
在这里插入图片描述

static void MX_GPIO_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStruct = {0};
    /* GPIO Ports Clock Enable */
    __HAL_RCC_GPIOA_CLK_ENABLE();
    __HAL_RCC_GPIOB_CLK_ENABLE();
    /*Configure GPIO pin Output Level */
    HAL_GPIO_WritePin(GPIOB, GPIO_PIN_5, GPIO_PIN_SET);

    /*Configure GPIO pin : LED_Pin */
    GPIO_InitStruct.Pin = GPIO_PIN_5;
    GPIO_InitStruct.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStruct.Pull = GPIO_NOPULL;
    GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    HAL_GPIO_Init(GPIOB, &GPIO_InitStruct);

}

然后在main函数的while(1)里写跑马灯程序
在这里插入图片描述

  while (1)
  {
      /* USER CODE END WHILE */
      HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,RESET);
      HAL_Delay(100);
      HAL_GPIO_WritePin(GPIOB,GPIO_PIN_5,SET);
      HAL_Delay(100);
      /* USER CODE BEGIN 3 */
  }

用STlink连接开发板,点击右上角的小三角形下载。

大功告成~~~~~~~~~~~

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在Mac中开发STM32单片机 的相关文章

  • 21-《电子入门趣谈》第四章_自己制作电路板-4.2洞洞板的介绍和经典案例使用教程

    好消息 xff1a 请在手机淘宝或闲鱼上搜索 电子入门趣谈 xff0c 有惊喜哦 我把全本电子入门趣谈的电子版 xff08 包括科技提升和理论升华部分 xff0c 共计50余万字 xff09 放到上面开始兜售啦 xff0c 如果您真的喜欢这
  • vlc-添加自定义的demuxer解复用插件----播放h264裸文件

    使用vlc3 0 6 在ubuntu 64bit上编译 xff0c vlc使用插件的方式组织对多种视频源的支持 xff0c 比如 avi mp4 mkv 等等 xff0c 这里想添加一个自己的demuxer xff0c 从一个h 264文件
  • 进程管理(五)--linux进程内核栈

    在进程创建时 xff0c 内核会为进程创建一系列数据结构 xff0c 其中最重要的就是上章学习的task struct结构 xff0c 它就是进程描述符 xff0c 表明进程在生命周期内的所有特征 同时 xff0c 内核为进程创建两个栈 x
  • [802.11]IEEE 802.11认证方式介绍

    一 802 11认证方式 802 11有开放系统认证 xff08 open system authentication xff09 和共享密钥认证 xff08 shared keyauthentication xff09 两种方式 1 1
  • 对‘std::xxx’未定义的引用

    出现一大串 对 std xxx 未定义的引用 的原因 xff1a 对于gcc后缀文件 xff0c 编译的时候可以用gcc g 43 43 xff0c 但是链接的时候要用g 43 43 xff0c 因为gcc和g 43 43 在编译的时候是相
  • 快速傅里叶变换

    FFT xff0c 即为快速傅氏变换 xff0c 是离散傅氏变换的快速算法 xff0c 它是根据离散傅氏变换的奇 偶 虚 实等特性 xff0c 对离散傅立叶变换的算法进行改进获得的 它对傅氏变换的理论并没有新的发现 xff0c 但是对于在计
  • C++项目开发中的一些问题及解决记录

    1 std vector类使用 xff1a https blog csdn net weixin 41743247 article details 90635931 2 vector求和 xff1a include lt numeric g
  • win32和android 的cocos2dx环境搭建详细教程

    转载 请注明出处 xff1a http blog csdn net aa4790139 article details 8086635 详细搭建步骤如下 xff1a 1 Android 开发环境搭建 Android开发环境搭建不是重点 相信
  • 快速傅里叶变换在信号处理中的应用

    傅里叶变换FT xff08 Fourier Transform xff09 是一种将信号从时域变换到频域的变换形式 它在声学 信号处理等领域有广泛的应用 计算机处理信号的要求是 xff1a 在时域和频域都应该是离散的 xff0c 而且都应该
  • 卷积

    随着机器学习的逐渐升温 xff0c 卷积神经网络这个专业词汇也越来越多地出现在我们眼前 卷积神经网络是一种前馈神经网络 xff0c 包括一维 二维以及三维卷积神经网络 这篇文章我们先来学习了解一下卷积的概念 在泛函分析中 xff0c 卷积是
  • 二叉树基础知识总结

    现实生活当中 xff0c 我们每个家庭都会有一个家谱 xff0c 来罗列家庭成员的关系 例如父亲下面的分支里有儿子或者女儿 xff0c 而父亲又属于祖父祖母的下部分支 其实这个家谱在计算机科学中映射的就是树形的表示方法 可见在很久以前 xf
  • 物联网(Iot)台灯设计完整教程(长图文)

    现如今随着物联网的概念深入人心 xff0c 物联网的设备也越来越普及 xff0c 本篇文章介绍的就是一个物联网台灯的设计 该设计主要包含物联网芯片开发 微信客户端开发 后台服务器端开发以及三个组件之间互联等 xff0c 其总体设计逻辑框图如
  • SVN打标签方法及在此过程中的问题处理

    所谓的 打标签 xff0c 我个人的理解是 xff1a 项目取得了阶段性成果 xff0c 需要保存在标签 xff08 tags文件夹 xff09 中 xff0c 以备不时之需 我采用的打标签的方法是 xff1a 1 在SVN客户端打标签 前
  • STM32 CAN 过滤器、滤波屏蔽器配置总结

    http blog csdn net jixiangrurui article details 39370027 一 过滤组 过滤器编号介绍 在 STM32 互联型产品中 xff0c CAN1 和 CAN2 分享 28 个过滤器组 其它 S
  • Linux内核源码之自旋锁的实现

    1 Linux内核同步 Linux内核中有许多共享资源 xff0c 这些共享资源是内核中进程都有机会访问到的 内核对其中一些共享资源的访问是独占的 xff0c 因此需要提供机制对共享资源进行保护 xff0c 确保任意时刻只有一个进程在访问共
  • cmake编译c++程序

    当在Linux系统下编写程序时候 xff0c 如果没有类似于visual studio vs code等IDE 集成开发环境 时 xff0c 如何编译 运行程序呢 xff1f 一种方法是编写makefile文件 xff0c 用makefil
  • #if 0 /#if 1用法介绍(屏蔽代码块)

    当屏蔽掉大块代码时 xff0c 使用 34 if 0 34 比使用 34 34 要好 xff0c 因为用 34 34 做大段的注释要防止被注释掉的代码中有嵌套的 34 34 这会导致注释掉的代码区域不是你想要的范围 xff0c 当被注释掉的
  • 调试工具之UDP/TCP网络调试助手NetAssist

    参考文章列表 xff1a https blog csdn net zhzht19861011 article details 4545260 https blog csdn net qq 29350001 article details 7
  • idea第一次新建SpringBoot项目报错 Error:(3, 32) java: 程序包org.springframework.boot不存在

    跟着网上的教程第一次创建SpringBoot xff0c 创建好之后他们都可以直接写Controller类 xff0c 然后运行就能从localhost访问hello word了 但是我再第一次创建之后 xff0c 出现下面的情况 Erro
  • 本地socket的select用法

    学习socket的select用法 xff0c 下面代码大部分是从网上借鉴的 xff0c 只不过把网络部分的socket改为了本地socket xff0c 并加了一些自己测试用的语句 xff0c 如果有冒犯之处请联系我 xff0c 我立马删

随机推荐

  • C/C++程序编译过程详解

    C C 43 43 程序编译过程详解 C语言的编译链接过程要把我们编写的一个c程序 xff08 源代码 xff09 转换成可以在硬件上运行的程序 xff08 可执行代码 xff09 xff0c 需要进行编译和链接 编译就是把文本形式源代码翻
  • realsense435i运行vins-mono,标定部分

    相机标定 1 安装kalibr xff1b 参考 xff1a https blog csdn net wangbaodong070411209 article details 112248834 https blog csdn net we
  • TX2入门教程软件篇-安装python3.6+

    sudo add apt repository ppa jonathonf python 3 6 sudo apt get update sudo apt get install python3 6 增加python3两个版本的优先级 su
  • Ubuntu 16.04使用Wireshark 抓包分析USB Audio Class 设备流程

    0 前言 为了分析usb麦克风的交互流程 xff0c 需要进行usb抓包 1 安装相关插件 安装usbmon sudo addgroup usbmon sudo gpasswd a USER usbmon echo 39 SUBSYSTEM
  • QT5.5实现串口通信

    QT5 1以上版本自带QtSerialPort集成库 xff0c 只要在头文件中集成 include lt QtSerialPort QSerialPort gt include lt QtSerialPort QSerialPortInf
  • “JTAG Warning: T-bit of XPSR is 0 but should be 1. Changed to 1.” 解决方案

    最近在调试一块GD32F107RCT6 xff0c 无法进行下载 错误提示 xff1a JTAG Warning T bit of XPSR is 0 but should be 1 Changed to 1 1 判断BOOT0 BOOT1
  • Windows无法访问Ubuntu Samba 解决方案

    好久没用Windows访问Ubuntu的共享文件 xff0c 忘记了密码 xff0c 重装Samba后提示Windows无法访问 可以打开文件但是无法访问 查看log var log samba log 192 168 1 39 smbd
  • keil C数组声明问题

    C语言中 xff0c 我们声明一个一维数组 xff0c 可以用以下几种方法 int buf 3 int buf 61 0 int buf 3 61 1 2 3 但是今天在keil中 使用int buf 61 0 这种方式进行声明 xff0c
  • 初学QML之qmlRegisterType

    qmlRegisterType 是一个可以将C 43 43 实现的类在QML中调用的 xff0c 连接C 43 43 和QML的一个工具 首先来看QtAssistant的介绍 int qmlRegisterType const char u
  • 在IDEA中引入jQuery无效

    在idea开发前端页面中 xff0c 引入jQuery后 xff0c 使用 会出现下划线 xff0c 提示未定义 虽然不影响使用 xff0c 运行后可以得到正常结果 xff0c 但还是看的很不爽 解决办法 xff1a Preferences
  • Asterisk WebRTC 搭建指南

    1 WebRTC简介 WEBRTC是一个开源项目 xff0c 其宗旨是让WEB浏览器通过简单的JavaScript具备实时通信 Real Time Communications RTC 的能力 WEBRTC目前支持JS和HTML5 xff0
  • UDP三种通讯方式

    单播 xff1a 单播用于两个主机之间的端对端通信 组播 xff1a 组播用于对一组特定的主机进行通信 广播 xff1a 广播用于一个主机对整个局域网上所有主机上的数据通信 单播实现 发送端 public class SendDemo pu
  • ArduPilot——如何对飞控LOG进行简易振动分析

    版权声明 xff1a 本文为博主原创博文 xff0c 未经允许不得转载 xff0c 若要转载 xff0c 请说明出处并给出博文链接 首先 xff0c 你得先有一架可以飞的且刷的是ArduPilot飞控代码的无人机和地面站Misson Pla
  • SITL Simulator —— ArduPilot —— Windows

    版权声明 xff1a 本文为博主原创博文 xff0c 未经允许不得转载 xff0c 若要转载 xff0c 请说明出处并给出博文链接 参考网页 xff1a http ardupilot org dev docs sitl native on
  • ArduCopter——ArduPilot——航点导航WPNav(一)

    版权声明 xff1a 本文为博主原创博文 xff0c 未经允许不得转载 xff0c 若要转载 xff0c 请说明出处并给出博文链接 现如今 xff0c 四旋翼飞行器已经从几年前的遥控航模变成真正可以超视距操控的无人机 xff0c 离不开伟大
  • 多频超声波清洗换能器用于高精密清洗系统

    多频超声波清洗换能器因加工方式和工作要求不同 xff0c 超声波换能器的工作方式可分为连续工作和脉冲式工作 xff0c 不同的工作方式对换能器的要求是不同的 连续式工作是不停机工作 xff0c 工作电流不是很大 xff0c 一般使用在清洗方
  • 超声波发生器电源控制电路线路板设计

    超声波发生器电源控制电路线路板是由匹配电容 xff0c 驱动变压器 xff0c 高功率的IGBT功率管 xff0c 匹配电感盒MOS管组成 xff0c 所有的组件一目了然 xff0c 零部件少 xff0c 故障率低 xff0c 造价成本低
  • 洗碗机超声波换能器振子设计

    超声波的声波是一种可以穿透液体和固体的声学化学能量 xff0c 超声波的污染非常小穿透力强 xff0c 所以人们就想到了用它来清洗餐具 xff0c 于是乎超声波洗碗机就应运而生了 洗碗机超声波换能器振子作为超声波洗碗机的三大组件之一 xff
  • 超声波清洗机电路板线路板设计

    在我们日常生活中遇见的超声波清洗设备 xff0c 大多是使用低频率或低功率的超声波 xff0c 而且由于被清洗件尺寸往往较小 xff0c 所以清洗槽的尺寸往往也较小 xff0c 清洗槽内壁高度一般不高于400mm 这类清洗机清洗物品涉及范围
  • 在Mac中开发STM32单片机

    想要在Mac下开发32单片机 xff0c 又不想装虚拟机的同学可以看看 使用工具 xff1a CLion xff08 JetBrains家族一员 xff09 STM32CubeMX xff08 配置芯片 xff0c 生成初始化代码 xff0