STM32CubeMX教程之简介及基本使用

STM32CubeMX教程之简介及基本使用STM32CubeMX是意法半导体推出的图形化配置工具,通过傻瓜化的操作便能实现相关配置,最终能够生成C语言代码,支持多种工具链,比如MDK、IARForARM、TrueStudio等。尤其值得一提的是,TrueStudio已经被ST收购,提供完全免费的版本,并且,通过插件式安装,可以将STM32CubeMX集成在一个IDE,使用十分方便。如下图:图1TrueStudio中的STM32Cub…

大家好,又见面了,我是你们的朋友全栈君。

STM32CubeMX是意法半导体推出的图形化配置工具,通过傻瓜化的操作便能实现相关配置,最终能够生成C语言代码,支持多种工具链,比如MDK、IAR For ARM、TrueStudio等。尤其值得一提的是,TrueStudio已经被ST收购,提供完全免费的版本,并且,通过插件式安装,可以将STM32CubeMX集成在一个IDE,使用十分方便。如下图:

STM32CubeMX教程之简介及基本使用

图1 TrueStudio中的STM32CubeMX

接下来将分步骤介绍使用STM32CubmeMX及MDK、STM32CubmeMX及TrueStudio进行STM32程序设计。

一、新建工程(方式1 使用ST官方的开发板)

打开STM32CubmeMX,在主界面选择New Project,在弹出来的对话框中可以选择基于芯片创建工程还是基于特定开发板创建工程,如图2。

STM32CubeMX教程之简介及基本使用

图2  芯片或者开发板选择

此处,我们选择Board Selector,并进一步选择我使用的开发板NUCLEO-F401RE,选中后如图3所示。

STM32CubeMX教程之简介及基本使用

图3 开发板或者芯片选择

双击该开发板选项,会提示是否采用默认模式初始化所有外设,我选择YES,结果如图4所示。

STM32CubeMX教程之简介及基本使用

图中可见,已经完成了初步的配置,并且用不同的颜色进行标识。在左边树状图中,如果该外设能够正常使用,则为绿色,比如本例中的USART2,如果是部分冲突,则会以黄色警告图标STM32CubeMX教程之简介及基本使用的方式进行提醒,比如,此处的ADC1。将鼠标移至黄色叹号处,可以看到图5所示文字。告诉开发人员,ADC1与PA5以及USART2的当前配置冲突了,因为我们现在将PA5配置为输出、USART2配置为异步串行通信了。点开ADC1前面的加号,则能更清晰看到具体冲突的ADC通道,如图6所示。

STM32CubeMX教程之简介及基本使用

图5  ADC1警告

STM32CubeMX教程之简介及基本使用

图6 ADC1具体冲突的地方

同样的,我们将鼠标光标放在STM32CubeMX教程之简介及基本使用上,可以看到,图7所示提示。告诉我们I2C2不可用,因为PB3脚已经映射为SYS_JTDO-SWO。

STM32CubeMX教程之简介及基本使用

图7 冲突导致某功能不能使用

由于本例使用了默认配置进行初始化,我们需要做的工作就少了许多,在下一章节中将介绍更接近于实际应用的工程创建方式。

二、项目设置

与很多软件一样,STM32CubeMX也可以进行工程的设置,通过菜单Project->Settings便可进入图8所示工程设置对话框。

STM32CubeMX教程之简介及基本使用

图8 Project Settings

点击Code Generator,进行进一步配置,如图9所示。

STM32CubeMX教程之简介及基本使用

STM32CubeMX教程之简介及基本使用

STM32CubeMX教程之简介及基本使用

STM32CubeMX教程之简介及基本使用

图9 代码生成设置

如果后续不需要新增其他外设,建议Copy necessary,如果后续需要新增其他外设又可能不再用STM32CubeMX,建议Copy all,如果不太会复制到其他地方或者大家的库都放在同一个路径,可以选用Reference,比较节约硬盘空间。

三、修改代码

所有自己编写的代码请放在/* USER CODE BEGIN XXX */   /* USER CODE END XXX */之间,比如我们需要新增加的头文件,放在/* USER CODE BEGIN Includes */  /* USER CODE END Includes */之间,需要增加的全局变量放在/* USER CODE BEGIN PV */ /* USER CODE END PV */之间等。

STM32CubeMX教程之简介及基本使用

图10 自己编写代码的区域

本例实现LED灯LD2以1Hz频率连续闪烁,在while(1)中增加如下代码即可。

 /* USER CODE BEGIN WHILE */
  while (1)
  {

  /* USER CODE END WHILE */

  /* USER CODE BEGIN 3 */
     HAL_GPIO_TogglePin(LD2_GPIO_Port,LD2_Pin);
     HAL_Delay(500);
  }
  /* USER CODE END 3 */

四、配置下载工具

在工程文件右键,进行相关配置,如图11所示。

STM32CubeMX教程之简介及基本使用

图11 仿真工具配置

一切OK,编译STM32CubeMX教程之简介及基本使用,下载STM32CubeMX教程之简介及基本使用,便可验收成果了,祝君顺利!欢迎交流:

STM32CubeMX教程之简介及基本使用

本例示例代码

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/135576.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • 文件包含漏洞—allow_url_fopen和allow_url_include详解

    文件包含漏洞—allow_url_fopen和allow_url_include详解文件包含漏洞_allow_url_fopen和allow_url_include详解提要:在文件包含漏洞中,PHP脚本环境中php.ini文件中通常会涉及到这两个参数,两个参数的开启或关闭影响文件包含漏洞的利用。1,参数简介:allow_url_fopen参数(只影响RFI,不影响LFI)简介:是否允许将URL(HTTP,HTTPS等)作为文件打开处理allow_url_include参数(只影响RFI,不影响LFI)简介:是否允许includeI()和require()函数包含URL(HTTP

  • 用matlab绘制二元函数图像_心形函数表达式

    用matlab绘制二元函数图像_心形函数表达式文章目录Matlab二元函数图像绘制plot3函数的基本用法fplot3函数基本用法进阶用法绘制二元函数图像Matlab二元函数图像绘制在讲二元函数图像绘制之前,先讲解plot3与fplot3的实际用法,之后再讲解二元函数图像绘制,有需要的同学可直接跳转查看。plot3函数的基本用法本节通过循序渐进的方法,先介绍简单的plot3用法,接着再一步一步进阶难度,并且在代码中给出每块代码的功能以及使用方法,以帮助大家更快的学习使用。实例1:绘制三维直线%给定x、y、z的数值x=[1,2,3];

  • SPI接口详细介绍

    SPI接口详细介绍1.概述SPI=SerialPeripheralInterface,是串行外围设备接口,是一种高速,全双工,同步的通信总线。常规只占用四根线,节约了芯片管脚,PCB的布局省空间。现在越来越多的芯片集成了这种通信协议,常见的有EEPROM、FLASH、AD转换器等。优点:支持全双工,push-pull的驱动性能相比open-drain信号完整性更好;支持高速(100MHz以上…

  • 《提问的艺术》读后感「建议收藏」

    《提问的艺术》读后感「建议收藏」前言提问前他明明能帮到我却不帮我提问前必知必会的一些事关于搜索引擎提问时找准对象学会停顿组织你的问题清晰的发问低声下气代替不了做自己的家庭作业删除无意义的要求不要把问题标记为紧急即使对你而言的确如此礼貌总是有益的对待无礼提问禁区总结前言众所周知,你所提技术问题的解答很大程度上取决于你提问的方式与解决此问题的难度,但是怎么清楚的让有经验的人明白你表述的问题,让你获得最

  • HTML 表格表单代码实例(个人简介表)

    HTML 表格表单代码实例(个人简介表)<!DOCTYPEhtml><htmllang=”en”><head><metacharset=”UTF-8″><metahttp-equiv=”X-UA-Compatible”content=”IE=edge”><metaname=”viewport”content=”width=device-width,initial-scale=1.0″><title&…

  • WEBAPP开发技巧总结

    WEBAPP开发技巧总结自Iphone和Android这两个牛逼的手机操作系统发布以来,在互联网界从此就多了一个新的名词-WebApp(意为基于WEB形式的应用程序,运行在高端的移动终端设备)。开发者们都知道在高端智能手机系统中有两种应用程序:一种是基于本地(操作系统)运行的APP;一种是基于高端机的浏览器运行的WebApp,本文将主要讲解后者。WebApp与Native App有何区别呢?Nat

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号