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

更多内容请浏览 OSnotes的CSDN博客

STM32CubeMX教程1 工程建立的更多相关文章

  1. Eclipse中STM32工程建立步骤

    前段时间一直在折腾linux系统上STM32的开发,网上一顿搜,费劲九牛二虎之力终于把环境搭好了(现在都有点忘了,后面再折腾环境搭建一定要写个教程,今天先不写了). 自从环境搭好之后,就基本抛弃MDK ...

  2. Davinci DM6446开发攻略——DSP开发工程建立

    前段时间一直忙一个项目,同时在生活上时时提防和抵抗中国地沟油.国外核心转基因调和油.大豆油.色拉油.大米玉米.可怕的喂药鱼.药水泡农药喷无虫咬的青菜,所以没时间打理自己的博客,让开发攻略停顿了一段时间 ...

  3. 使用STM32CubeMX生成USB_HOST_HID工程[添加对CAPS_LOCK指示灯的控制][SetReport]

    在之前(使用STM32CubeMX生成USB_HOST_HID工程)的基础上进行修改 在结合之前在pc上的测试 USB之HID类Set_Report Request[调试手记1] 测试代码如下: /* ...

  4. 使用STM32CubeMX生成RTC工程[闹钟中断2]

    在上次使用STM32CubeMX生成RTC工程[闹钟中断]基础上实现周期间隔的闹钟 一些场合需要周期性的闹钟 现在为了方便设置每十秒来一次. 备注: 当然可以直接修改HAL库static HAL_St ...

  5. Quartus II——工程建立和常用设置

    Quartus ii是针对Altera FPGA的一款EDA软件,在此以一个led闪烁工程来简单说一下基本操作: 一.注意事项 Quartus ii最大的注意事项就一点:工程名称以及工程里面的文件名称 ...

  6. springcloud工程建立 父工程+公用子模块+微服务提供模块

    建立 Java Working Set:工程多的时候可以展开收缩,方便管理 切换到Package Explorer视图,并点击视图右侧下箭头,选择Working Sets,如下图: 建立父工程,将后续 ...

  7. STM32工程建立

    STM32工程建立 对于用keil5建立stm32工程有两种方法,一种在学习过程中比较方便的建立方式:我们称为工程方式一,另一个便是在实际工程中用的最多,也最普遍,在实际过程中用的最多的,我们称为工程 ...

  8. QuartusII13.0使用教程详解(一个完整的工程建立)

    好久都没有发布自己的博客了,因为最近学校有比赛,从参加到现在都是一脸懵逼,幸亏有bingo大神的教程,让我慢慢走上了VIP之旅,bingo大神的无私奉献精神值得我们每一个业界人士学习,向bingo致敬 ...

  9. STM32F072从零配置工程-建立工程文件

    快速建立工程有两种方法: 第一种是通过官方提供的外设库来搭建,好处是使用库函数,而不需要深入研究寄存器配置: 第二种是通过STM32CubeMX,好处是直观快速,可以直接帮你配置好功能和时钟,不过使用 ...

  10. 工程建立多个source folder

    在工程中,想在建立多个source filder,总是报错,报错信息是 Cannot nest 'GzEdu/src/c' inside 'GzEdu/src'. To enable the nest ...

随机推荐

  1. 一文弄懂TypeScript中的混合

    1.前言 由于TypeScrip中的类不支持多继承,所以引入了混合(Mixin)的特性,可以间接实现继承的效果. 2.正文 // 声明一个汽车类Vehicle,它有drive方法 class Vehi ...

  2. 解决WPF+Avalonia在openKylin系统下默认字体问题

    一.openKylin简介 openKylin(开放麒麟) 社区是在开源.自愿.平等和协作的基础上,由基础软硬件企业.非营利性组织.社团组织.高等院校.科研机构和个人开发者共同创立的一个开源社区,致力 ...

  3. C++ STL快速入门方法

    在数月之前的机试中第一次体验到STL的威力,因为自己本来一直在用C语言做开发,很多数据结构都是自己造的,比如链表.队列等,第一次接触C++ STL后发现这些数据结构都已经给我提供好了,我直接拿去调用就 ...

  4. 19c上ADG主库sys密码修改会影响备库同步吗?

    一套Oracle 19c的ADG集群要修改sys密码,由于之前遇见过11g上sys密码修改导致同步问题的情况,所以改之前特意查了下文档,发现其实12cR2开始,在主库修改密码就会自动同步到备库了,以下 ...

  5. 想让你的代码简洁,试试这个SimpleDateFormat类高深用法

    本文分享自华为云社区<从入门到精通:SimpleDateFormat类高深用法,让你的代码更简洁!>,作者:bug菌. 环境说明:Windows 10 + IntelliJ IDEA 20 ...

  6. HttpWebResponse获取DOM数据注意之ContentEncoding

    public string GetKaiJ(string type = "ssq") { /*1.通过WebBrowser控件&HttpWebRequest获得网站信息*/ ...

  7. mybatis 操作 mysql 大批量插入,数据分页处理

    /** * 大批量插入,数据分页处理 * * @param tableName 临时表名称 * @param mapHead 临时表属性 Map,key = 临时表字段属性, value = 具体值. ...

  8. idea java项目启动后访问html页面乱码

    最近在做一个较久的项目,用的还是servlet+html(jsp),代码拉到本地后运行,访问登录页login.html既然乱码,先看个乱码的效果 怎么样,是不是很经典的乱码,别着急,我们一点点来分析乱 ...

  9. 8.3随记之Ubuntu 系统中修改 DNS 的两种办法和暗链

    8.3 随记 在 Ubuntu 系统中修改 DNS 的两种办法 在终端进行修改编辑 sudo nano /etc/resolv.conf 进行修改文件 例如:nameserver 8.8.8.8, 保 ...

  10. 一、Linux发展史

    一.Linux发展史及红帽认证 红帽授权培训合作伙伴 木兰宽松许可证 1. Linux系统发展史 1. Unix发展历程 上世纪六十年代贝尔实验室(Bell).麻省理工学院(MIT)以及通用电气(GE ...