当前位置:首页 > 单片机 > STM32CubeMX > 正文内容

STM32CubeMX系列教程0:创建工程

ouyang4个月前 (09-17)STM32CubeMX304

STM32Cube 是一个全面的软件平台,包括了ST产品的每个系列。平台包括了STM32Cube 硬件抽象层(一个STM32抽象层嵌入式软件,确保在STM32系列最大化的便携性)和一套的中间件组件(RTOS, USB, FatFs, TCP/IP,  Graphics, 等等).

  • 直观的STM32微控制器的选择和时钟树配置

  • 微控制器图形化配置外围设备和中间件的功能模式和初始化参数

  • C代码生成项目覆盖STM32微控制器的初始化符合IAR™,Keil的™和GCC编译器。

STM32cubeMX及Keil MDK安装与环境配置,请参考《STM32开发环境安装》http://oynote.top/?id=330

使用STM32CubeMX工具创建工程,能够及其方便的配置芯片的各种外设与功能。加快项目的开发进程
这里以配置一个LED灯的闪烁为例,进行讲解

1、创建工程

打开STM32CubeMX软件
STM32CubeMX

  1. 新建工程。

  2. 加载工程。

  3. 选择一个MCU。

直接点击选择一个MCU。
STM32CubeMX
通过搜索,或筛选,找到所需要的MCU型号,这里我使用的是STM32F411CEU6。点击选中,上方会显示所选芯片的信息。双击所选芯片进入工程。
STM32CubeMX

2、配置外设

进入工程配置界面
STM32CubeMX

开启SWD调试功能

打开System Core选项卡,单击SYS选项。
STM32CubeMX
选择Debug设置为Serial Wire。选中同时,右侧单片机上会显示所占用的引脚以及功能。
STM32CubeMX

使能外部时钟

如果单片机系统中有外部时钟则进行设置,如果没有可跳过。
打开System Core选项卡,单击RCC选项。选择HSE(外部高速时钟)为Crystal/Ceramic Resonator(晶振/陶瓷谐振器)
选择LSE(外部低速时钟)为Crystal/Ceramic Resonator(晶振/陶瓷谐振器)
STM32CubeMX

选择GPIO

做右侧单片机上,选择LED灯所连接的IO端口。左键单击,选择输出模式.
STM32CubeMX
设置为输出模式后,在IO上右键单击,设置用户标签,设置为LED
STM32CubeMX

配置GPIO

打开System Core选项卡,打开GPIO选项,单片机上所有被占用的引脚都在这里进行配置,选中所要配置的引脚.
STM32CubeMX

  1. GPIO上电后的默认输出电平.
    这里根据需要设置,我这里设置为高电平,上电时LED灯熄灭.

  2. GPIO输出模式.(推挽输出/开漏输出模式)
    这里我设置为推挽输出模式.

  3. GPIO上拉或下拉设置.(浮空,上拉,下拉)
    这里我设置为上拉.

  4. GPIO输出速度.(低速,中速,高速,非常高)
    默认即可.

  5. GPIO用户标签.
    可以在右侧MCU上设置,也可以在这里进行设置.

    3、配置时钟系统

    点击顶部的时钟配置.
    如果在前一步是能了外部告诉时钟和外部低速时钟,这里才可以设置.
    分别填入MCU系统所使用的时钟频率.
    外部低速时钟一般都为32.768KHz,这里默认即可.
    外部高速时钟需要根据实际使用晶振频率进行设置.
    image.png
    选择外部时钟源.在HCLK处输入推荐时钟频率,点击回车,即可自动完成配置.
    image.png
    设置推荐时钟频率100M.点击回车,自动完成配置.
    image.png

    4、工程输出设置

    工程设置

    点击顶部工程管理,设置工程名称,设置工程保存路径.
    注意:工程路径中不允许含有中文.否则会输出错误
    选择开发环境,如果使用keil开发,则选择MDK-ARM.
    STM32CubeMX

    源码输出设置

    点击左侧Code Generator.选中仅复制需要的库,否则生成的工程会很大.
    选择将外设配置为单独的.c和.h文件.
    STM32CubeMX

    生成源码工程

    点击右上角生成按钮.
    STM32CubeMX



  6. 打开工程

  7. 方法一

  8. 在STM32CubeMX中,点击生成代码后,点击打开工程即可使用keil打开工程.

    STM32CubeMX

  9. 方法二

  10. 进入工程目录,    STM32CubeMX生成的工程目录中,目录结构如下


  11. image.png

  12. ①,工程目录名称

  13. ②,STM32驱动库

  14. ③,STM32CubeMX生成的外设配置文件(.c)的头文件(.h)。

  15. ④,工程的入口目录

  16. ⑤,STM32CubeMX生成的外设配置文件(.c)。

  17. 进入MDK-ARM文件夹,找到工程名称后缀为.uvprojx的文件,这个文件是keil工程的入口文件.双击即可使用keil打开.

  18. image.png

  19. 5、写入用户代码

    进入main.c文件.
    STM32CubeMX
    在#include “main.h”上右键进入main.h中.
    STM32CubeMX
    往下翻,可以找到之前在STM32CubeMX中定义的IO引脚标签.
    STM32CubeMX
    回到main.c,找到主函数入口,找到主循环.
    STM32CubeMX
    在code begin与code end直之间写入用户代码.否则在STM32CubeMX中修改配置在生成源码时,会清空code begin与code end之外的代码.

         HAL_GPIO_TogglePin(LED_GPIO_Port,LED_Pin); //取反GPIO
         HAL_Delay(500); //软件延时500ms

    这是一种比较简单的方法,程序功能是LED灯每隔500ms改变一次状态.

  20. 下图中,第100行到103行,是另一种写法,也可以达到同样的效果.
    image.png

    编译

    左上角有两个按钮,分别是1.编译目标文件(编译快),2.编译所有文件(编译慢),一般每次生成工程后的第一次编译工程使用编译所有文件,后面年只需要编译目标文件即可.这里我们点击2.
    STM32CubeMX
    显示如下信息就说明编译完成,并且没有报错与警告.
    STM32CubeMX

    下载

    下载方法请进入STM32下载方法章节查看:http://oynote.top/?tags=57


    扫描二维码至手机访问

    扫描二维码推送至手机访问。

    版权声明:本文由电子科技Blog发布,如需转载请注明出处。

    转载请注明出处:http://oynote.top/?id=331

    分享给朋友:
    返回列表

    没有更早的文章了...

    下一篇:STM32CubeMX系列教程1:GPIO输入与输出

    相关文章

    STM32CubeMX系列教程4:基本串行通信

    STM32CubeMX系列教程4:基本串行通信

    一、摘要二、配置工程2-1. 启动串口中断2-2. 编写用户代码2-3. 编写中断回调函数2-4. 编译下载1-1. 启用串口通信1-2. 编写用户代码1-3. 编译下载1. 轮询方式发送2. 中断方...

    STM32CubeMX系列教程1:GPIO输入与输出

    STM32CubeMX系列教程1:GPIO输入与输出

    一、摘要二、创建工程1-1. 配置RCC与Debug1-2. 选择GPIO引脚与功能1-3. 配置GPIO1. 配置外设与IO2. 时钟配置3. 工程输出设置三、编写用户代码1. 插入用户代码2. 编...

    STM32CubeMX系列教程3:基本定时器中断

    STM32CubeMX系列教程3:基本定时器中断

    一、摘要二、配置工程1-1. 使能定时器1-2. 配置定时器参数1-3. 开启定时器中断1. 配置定时器参数2. 生成工程三、编写用户程序1. 编写中断回调函数2. 启动定时器四、编译下载程序一、摘要...

    STM32CubeMX系列教程2:外部中断EXIT

    STM32CubeMX系列教程2:外部中断EXIT

    一、摘要二、配置工程3-1. 中断优先级分组3-2. 中断优先级1. 修改引脚模式2. 配置GPIO3. 开启外部中断4. 生成工程三、编写用户程序1. 编写中断回调函数四、编译下载程序1. 注意一、...

    STM32CubeMX系列教程5:串口接收不定长数据

    STM32CubeMX系列教程5:串口接收不定长数据

    一、摘要二、配置工程1. 配置串口及DMA2. 生成源码三、修改源码1. 重定向printf2. 添加串口接收所需变量3. 添加串口及IDLE处理函数4. 声明变量及函数5. 启用IDLE中断6. 修...

    发表评论

    访客

    ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。