首页 > 其他分享 >STM32CubeMX教程1 工程建立

STM32CubeMX教程1 工程建立

时间:2023-12-31 12:22:06浏览次数:43  
标签:教程 工程 STM32CubeMX 晶振 MCU Configuration 页面

1、准备材料

开发板(STM32F407G-DISC1
ST-LINK/V2驱动
STM32CubeMX软件(Version 6.10.0
keil µVision5 IDE(MDK-Arm

2、实验目标

使用STM32CubeMX软件建立一个STM32F407的空工程

3、建立流程

3.1、打开STM32CubeMX软件

如下图所示为STM32CubeMX软件主界面

3.2、开始建立工程

单击ACCESS TO MCU SELECTOR

3.3、选择MCU

在弹出的MCU选择界面,搜索工程使用的MCU型号,然后选中该MCU,单击界面右上角Start Project

3.4、进行必要配置

3.4.1、Pinout & Configuration页面配置

进入Pinout & Configuration页面中,如下图所示,对于空工程来说只需在Pinout & Configuration页面中配置RCC和SYS,RCC中主要配置高速外部时钟HSE和低速外部时钟LSE,SYS中主要配置单片机的Debug模式

如果使用高速外部时钟HSE,则需要单片机PH0-OSC_IN和PH0-OSC_OUT两个引脚接入一颗4MHz~16MHz的陶瓷晶振

如果使用低速外部时钟LSE,则一般需要单片机PC14-OSC32_IN和PC15-OSC32_OUT两个引脚接入一颗32.768kHz的陶瓷晶振

如果开发板单片机的引脚PH0-OSC_IN和PH0-OSC_OUT在原理图上连接了一颗4MHz~16MHz晶体/陶瓷晶振,那么HSE就选择)Crystal/Ceramic Resonator,否则就选择Disable;同理如果PC14-OSC32_IN和PC15-OSC32_OUT两个引脚连接了一颗32.768kHz的晶体/陶瓷晶振,那么LSE也选择Crystal/Ceramic Resonator,否则一般直接选Disable即可,笔者使用的开发板HSE外部接入了一颗8MHz的陶瓷晶振,LSE未接入任何晶振,因此配置如下图所示

SYS中Debug模式表示MCU使用的下载调试模式,一般烧录程序会使用STLINK/JTAG/DAP等,按照自己的模式选择即可,笔者这里开发板板载了STLINK下载器,因此选择Serial Wire即可

3.4.2、Clock Configuration页面配置

参考下图调节即可

3.4.3、Project Manager页面配置

主要设置工程名称,存储位置,工具链/IDE

3.5、生成代码

单击页面右上角GENERATE CODE生成代码,提示生成代码成功

找到生成代码目录下MDK-ARM里的.uvprojx结尾的keil工程文件,双击打开,编译工程

生成的工程代码结构主要有①单片机的启动文件②用户核心应用文件③HAL库驱动文件④单片机系统初始化文件

用户添加代码需要在代码注释中指定的BEGIN和END之间,否则使用CubeMX重新构建工程之后,添加的代码会消失

4、烧录验证

将开发板利用调试器与电脑连接,确保调试器驱动已安装,可以通过设备管理器查看驱动,如下图所示

单击魔术手,选择对应调试器并配置

单击LOAD,烧录程序

5、小结

当创建好空工程后,以后需要使用到MCU的什么功能,就可以重新打开这个STM32CubeMX工程,然后主要是在软件Pinout & Configuration页面对功能进行配置,需要修改时钟在Clock Configuration页面配置,需要修改生成的工程及代码可以在Project Manager页面进行配置。

参考资料

um1718-stm32cubemx-for-stm32-configuration-and-initialization-c-code-generation-stmicroelectronics.pdf

标签:教程,工程,STM32CubeMX,晶振,MCU,Configuration,页面
From: https://www.cnblogs.com/lc-guo/p/17937268

相关文章

  • 无涯教程-Java 正则 - Matcher static String quoteReplacement(String s)函数
    java.time.Matcher.quoteReplacement(Strings)方法返回指定字符串的文字替换字符串。staticStringquoteReplacement-声明publicstaticStringquoteReplacement(Strings)s  - 要被字符串化的字符串。staticStringquoteReplacement-返回值文字字符串替换。......
  • 无涯教程-Java 正则 - Matcher Pattern pattern函数
    java.time.Matcher.pattern()方法返回此匹配器解释模式。Patternpattern()-声明以下是java.time.Matcher.pattern()方法的声明。publicPatternpattern()Patternpattern()-返回值为此匹配器创建的模式。Patternpattern()-示例下面的示例显示java.time.Matcher......
  • 无涯教程-Java 正则 - Matcher boolean matches函数
    java.time.Matcher.matches()方法根据模式匹配整个区域。booleanmatches()-声明以下是java.time.Matcher.matches()方法的声明。publicbooleanmatches()booleanmatches()-返回值当且仅当整个区域序列与该匹配器的模式匹配时,才返回true。booleanmatches()-示例......
  • 无涯教程-Java 正则 - Matcher boolean hitEnd函数
    是否是最后一人匹配项,如果是则返回true。booleanhitEnd()-声明以下是java.time.Matcher.hitEnd()方法的声明。publicbooleanhitEnd()booleanhitEnd()-返回值如果是最后一个匹配项,则返回为true;否则为falsebooleanhitEnd()-示例下面的示例显示java.time.Matcher......
  • Prometheus搭建教程
    一、部署prometheus官方文档:https://prometheus.io/docs/introduction/first_steps/下载地址:https://github.com/prometheus/prometheus/releases[root@centos7~]#tarzxfprometheus-2.45.2.linux-amd64.tar.gz[root@centos7~]#mvprometheus-2.45.2.linux-amd64/usr/l......
  • 无涯教程-Java 正则 - Matcher boolean lookingAt函数
    java.time.Matcher.lookingAt()方法尝试从区域的开头开始将输入序列与模式进行匹配。booleanlookingAt()-声明以下是java.time.Matcher.lookingAt()方法的声明。publicbooleanlookingAt()booleanlookingAt()-返回值当且仅当输入序列的前缀与此匹配器的模式匹配时,......
  • 无涯教程-Java 正则 - Matcher boolean hasTransparentBounds()函数
    java.time.Matcher.hasTransparentBounds()方法查询此匹配器的区域边界。booleanhasTransparentBounds()-声明以下是java.time.Matcher.hasTransparentBounds()方法的声明。publicbooleanhasTransparentBounds()booleanhasTransparentBounds()-返回值如果此匹配器......
  • 通过keil内置标准库创建stm32工程
    通过keil内置标准库创建stm32工程.mdkeil如果安装的有对应的标准库的话是可以不通过使用模板工程进行文件创建的。具体操作如下:1.跟51一样选择对应芯片型号,创建工程即可。2.注意!!!这个窗口就是标准库的配置窗口,勾选上便可在工程内使用标准库。3.一个基本的标准库工程至少应......
  • Python教程(18)——python文件操作详解
    所谓的文件操作是指对计算机中的文件进行读取、写入、修改和删除等操作。简单来说可以分为以下三个部分:打开文件操作文件关闭文件就是这三个简简单单的操作,却在计算机世界占有一席之地。打开文件有各种打开模式,各不相同;操作文件,有读写模式;关闭文件就比较简单了。Python文......
  • 无涯教程-Java 正则 - Matcher boolean hasAnchoringBounds()函数
    java.time.Matcher.hasAnchoringBounds()方法查询此匹配器的区域边界定位。booleanhasAnchoringBounds()-声明以下是java.time.Matcher.hasAnchoringBounds()方法的声明。publicbooleanhasAnchoringBounds()booleanhasAnchoringBounds()-返回值如果此匹配器使用锚......