文章目录

  • 前言
  • 1、工程建立
  • 2、配置
    • 2.1、写在前面
    • 2.2、操作界面一览
    • 2.1、引脚输出与配置
    • 2.2、时钟配置
    • 2.3、工程设置
      • 2.3.1、Project
      • 2.3.2、Code Generator
      • 2.3.3、Advanced Settings
  • 3、添加代码
  • 4、之于STM32L151C8T6

  下载工程文件:
  https://gitee.com/Joseph_Cooper/stm32-cube-mx-stm32-l151-c8-t6
  MCU:STM32F103ZET6/STM32L151C8T6-A
  IDE:MDK-Keil5
  固件库:STM32Cube FW_L1 V1.10.1


前言

  软件的安装网上有很多教程在此不过多赘述戳这里以查看,值得注意的是在创建工程失败时更换至低版本的JRE(Java Runtime Environment),在保证路径中无空格、中文、特殊字符的情况下一般可以解决问题。


1、工程建立

  在File中选择New Project...

  在随后跳出的界面中搜索[1]^{[1]}[1],选择[2]^{[2]}[2],对应型号自己的开发的MCU。

2、配置

2.1、写在前面

  本次开发的目的是实现LED的闪烁程序,LED1和LED2是通过灌电流方式连接在PB5PE5

2.2、操作界面一览


  上方的选项卡从左向右依次为:引脚输出和配置[3]^{[3]}[3]、时钟设置[4]^{[4]}[4]、工程管理[5]^{[5]}[5]、工具[6]^{[6]}[6]。这些选项卡的具体操作将在后面提到。当我们完成设置的时候就可以使用生成代码[7]^{[7]}[7]功能来
  创建工程完成后我们可以在操作界面看到最先进入的是引脚输出和配置[3]^{[3]}[3]选项卡,我们可以在其中选择我们想要的引脚输出方式。也可以在左侧栏中按类别(Categories)[1]^{[1]}[1]和索引[2]^{[2]}[2]来选择你要使用的功能。

2.1、引脚输出与配置

点击任意一个引脚就可以设置它的模式,这里设置为GPIO_OutPut
  你可能也注意到了引脚上有颜色区别。


  从左到右依次为不可配置引脚([1]^{([1]}([1]、未配置[2]^{[2]}[2]、配置了一个I/O口的功能但是没有初始化相对应的外设功能[3]^{[3]}[3]、配置成功[4]^{[4]}[4]。
  这么多引脚没有搜索功能是很麻烦的,其实我们在界面的下方的搜索框中可以直接搜索引脚。

  当你打开System view和Categories中的System Core的SYS选项时你可能看见以下画面:

  这里有一个√和一个!,直觉告诉你感叹号一定是不好的,没错
表示相关功能配置没问题
而感叹号表示警告,对应配置出现问题 点击该选项即可外设配置界面查看。
  我们可以看到其中的SYS有感叹号,悬停可查看原因显示是GPIO 的设置和调试设置有冲突,这里仅仅指部分调试选项(会用紫红色标记)和GPIO设置有冲突不使用相关设置的可以不予理会。

  本项设置其实是将相应调试功能引脚标记,如果不对引脚进行设置调试功能在SYS中即使未选择也不影响调试,但是只要设置了调试引脚用于其他功能就不能再使用该调试功能。
  是时候该进入时钟配置了,但是在进行时钟配置之前首先我们要确定我们使用的时钟源:

  这里设置的HSE和LSE的时钟源,如果不设置的话那就只能使用内部时钟了。来看看下面两个选项。
  BYPASS Clock Source(旁路时钟源)
  Crystal/Ceramic Resonator(晶体/陶瓷晶振)
  第二个很好理解就是板载的晶振,所谓HSE旁路时钟源,是指无需使用外部晶体时所需的芯片内部时钟驱动组件,直接从外界导入时钟信号。犹如芯片内部的驱动组件被旁路了。

2.2、时钟配置

  在时钟配置中我们可以看见如同数据手册中一样的时钟树,只要按照需求配置即可,值得注意的是未在RTC选项中配置之前是无法使用LSE时钟的。

2.3、工程设置


  在Project Manage选项卡中主要分三部分Project (工程项目)、Code Generator(代码生成器)、Advanced Settings(高级设置)。

2.3.1、Project


1、工程设置
1.1、Project Name:工程名称
1.2、Project Location:工程存放路径
1.3、 Application Struture:应用程序结构
  这里包含两个选项:Basic和Advanced。
  Basic:是基础的结构,一般不包含中间件(RTOS、文件系统、USB设备等)。
  Advanced:相反就是包含中间件,一般针对相对复杂一点的工程。
1.4、Toolchain Folder Location:工具链文件夹路径
  这个是根据上面Project Name和Project Location得出来的,用户不能修改。
1.5、Toolchain/IDE:工具链选择
2、堆栈设置
主要是堆和栈大小的设置。
  缺省值:Heap堆为0x200,Stack栈为0x400.
3、MCU和固件包
  这里的三个选项,关于MCU类型和固件包版本信息,一般不做修改。
3.1、Mcu Reference:MCU参考型号
3.2、Firmware Package Name and Version:固件包名称和版本信息
3.3、Use Default Firmware Location:使用默认固件包,勾选上就会根据系统进行默认匹配固件包,一般默认,不勾选则可以自己选择指定固件包。

2.3.2、Code Generator


1、固件包拷贝设置
1.1、Copy all used libraries into the project folder 将所有使用过的库复制到项目文件夹中。
  不管是否在工程中使用都拷贝到你工程目录下。这样一来,你工程下文件就比较多。工程生成时间会比较久。
1.2、Copy only the necessary library files 只复制必要的库文件。
  这个相比上一个减少了很多文件。只会拷贝使用到的库文件。
1.3、Add necessary library files as reference in the toolchain project configuration file 在工具链项目配置文件中添加必要的库文件作为参考。
  这里没有复制HAL库文件,只添加了必要文件(如main.c)。相比上面,没有Drivers相关文件。
2、生成文件设置
  这里可以多选,每项可选择:是or不是
2.1、Generate peripheral initialization as a pair of’.c/.h’ files per peripheral 每个外设生成独立的’.c/.h’文件
  不勾:所有初始化代码都生成在main.c
  勾选:初始化代码生成在对应的外设文件。 如UART初始化代码生成在uart.c中。
2.2、Backup previously generated files when re-generating 在重新生成时备份以前生成的文件
  重新生成代码时,会在相关目录中生成一个Backup文件夹,将之前源文件拷贝到其中。
2.3、Keep User Code when re-generating 在重新生成时保留用户代码
  比如:我在main.c中添加了一段代码,重新生成时,会在main.c中保留你之前自己添加的这段代码。
  注意:前提是这段代码写在规定的位置。也就是BEGIN和END之间。否则同样会删除。
2.4、Delete previously generated files when not re-generated 删除以前生成,但现在没有生成的文件
  比如:之前生成了spi.c,现在重新配置没有spi.c,则会删除之前的spi.c文件。

3、HAL设置
1.Set all free pins as analog (to optimize the power consumption) 将所有空闲引脚设置为模拟(以优化功耗)
  这个做低功耗产品时这个选项有必要勾选。
2.Enable Full Assert 使能所有断言
  也就是启用参数检查。
4、模板设置
1.Select a template to generate customized code 选择一个模板来生成自定义代码

2.3.3、Advanced Settings


1、驱动选择
  目前主要就是针对工程中使用到的外设,选择HAL还是LL驱动(参看上图)。 提示:目前有些型号MCU的部分外设没有LL驱动,使用之前需要查询。
  LL库(Low Layer)是ST新增的库,与HAL捆绑发布,文档也是和HAL文档在一起的。LL库更接近硬件层,对需要复杂上层协议栈的外设不适用,直接操作寄存器。
2、函数调用
主要关心后面两个选项:Not Generate Function Call和Visibility (Static)。
2.1、Not Generate Function Call不生成函数调用
  也就是你代码不调用对应初始化函数。
  比如:你GPIO项勾选Not Generate Function Call,你main.c函数中就不会调用MX_GPIO_Init这个函数。
2.2、Visibility (Static)可见性(静态)
  这个就是初始化代码声明为static。
提示:

  • 有些选项是是默认值,不能修改。如SystemClock_Config配置不声明为ststic.
  • 使用static是配合上面Code Generator代码生成章节中Generated files生成文件使用。如果都生成.c .h独立文件了,就不会生成static了。

3、添加代码

在主循环中添加以下代码:

     HAL_Delay(500);HAL_GPIO_TogglePin(GPIOE, GPIO_PIN_5);//翻转电平HAL_GPIO_TogglePin(GPIOB, GPIO_PIN_5);


  然后编译,下载,你就可以看见你的小灯闪烁起来了。

4、之于STM32L151C8T6

原理图:

配置调试端口:
选择HSE来源为外部晶振输入:

GPIO设置:

时钟树设置:

引脚图总览:

添加代码:

 HAL_GPIO_WritePin(RED_GPIO_Port,RED_Pin,GPIO_PIN_RESET);HAL_Delay(1000);HAL_GPIO_WritePin(GREEN_GPIO_Port,GREEN_Pin,GPIO_PIN_RESET);HAL_Delay(1000);HAL_GPIO_WritePin(BLUE_GPIO_Port,BLUE_Pin,GPIO_PIN_RESET);HAL_Delay(1000);HAL_GPIO_WritePin(GPIOA,RED_Pin|GREEN_Pin|BLUE_Pin,GPIO_PIN_SET);HAL_Delay(1000);

【STM32】【STM32CubeMX】STM32CubeMX的使用之一:工程建立之点亮你的LED相关推荐

  1. 51单片机(一)工程建立、点亮任意几个LED灯、烧录、锁存器

    工程建立.点亮1个LED灯.点亮任意几个LED灯.烧录 一. 建立工程 1.建立工程文件夹 2.创建工程文件 3.创建.c源文件 4.添加.c源文件到工程 二.点亮一个LED灯 1.察看原理图,明确电 ...

  2. 【STM32】手把手固件库开发工程建立

    再来复习一遍固件库开发方式的工程建立方法吧 -----针对STM32F10x系列(示例为F103C8T6,开发环境为MDK5) 目录 1 创建工程 2 在工程文件夹中手动创建四个文件夹 3 在固件库文 ...

  3. 【STM32】STM32CUBEMX + ADC(单通道,双通道DMA)

    STM32CUBEMX + ADC(单通道,双通道DMA) 案例应用 :使用ADC采集电压(单通道.单通道+DMA.双通道+DMA),并利用串口打印采集转换后的电压值 1.工具 IAR STM32CU ...

  4. STM32利用STM32CubeMX驱动SDRAM

    STM32利用STM32CubeMX驱动SDRAM 本次发布FMC总线驱动SDRAM的博客,为下次发布LTDC外设驱动RGB屏的博客做准备.利用STM32CubeMX和HAL库,生成的工程代码具有很强 ...

  5. STM32学习笔记(一)丨建立工程丨GPIO 通用输入输出

    本篇文章包含的内容 一.软件下载注册.驱动安装 1.1 软件(器件支持包)下载 1.2 ST-LINK驱动安装 1.3 USB转串口驱动安装 二.工程的建立 2.1 STM32的开发方式 2.2 新建 ...

  6. 灵动微电子MM32F0010A,替换STM32芯片,keil工程建立

    1.正常KEIL中找不到灵动微电子芯片,灵动微官网下载PACK包,地址如下: http://www.mindmotion.com.cn/download.aspx?cid=2546 下载完后解压,选择 ...

  7. STM32工程建立步骤

    最近在跟着B站的江科大自化协Up主学习STM32,STM32工程建立比较复杂,虽然在学习工程中为了方便都是复制粘贴工程文件夹,但为了以后使用其他类型的STM32芯片时创建工程目录,特意记录一下STM3 ...

  8. 使用STM32CubeMX创建USB Custom HID工程

    文章目录 前言 实验步骤 1.打开STM32CubeMX工具,选择你的MCU型号 2.配置系统参数,USB参数等 3.修改工程代码并编译 下载验证 前言 由于项目需要,要实现USB组合设备(Custo ...

  9. 使用HAL库、STM32CubeMX和Keil 5开发入门教程(一):点亮一盏LED灯(NUCLEO-F411RE)

    转载自:http://blog.csdn.net/charmingsun/article/details/50802267?readlog#t1 本教程以点亮一盏LED灯为目的为大家演示用STM32C ...

最新文章

  1. 如何快速融入团队(六)
  2. linux 内核 目录项高速缓存 dentry cache 简介
  3. 【Android 逆向】Android 进程简介 ( Android 应用启动流程 )
  4. 【译】gRPC vs HTTP APIs
  5. 寻找最大的k个数问题
  6. 可视化——matploblib 解决中文显示的问题
  7. yolov3-tiny 训练一个检测器(2)
  8. 安装Git SCM for Windows
  9. ucGUI移植到ARM
  10. C语言输入一个数,看它能否被3和5同时整除
  11. matlab ri值,基于Matlab的中国地面气候资料日值数据集(V3.0)快速处理
  12. Spotify 每周推荐功能:基于机器学习的音乐推荐
  13. 2020年拼多多校招面试题及答案-最全最新-持续更新中
  14. Android Studio 连接阿里云数据库【制作基于数据库的多人远程聊天APP】
  15. 【2022 CCF BDCI 文心大模型创意项目】乐享词话—诗词意境辅助记忆工具
  16. 快速了解 Java 线上问题快速诊断神器 Arthas
  17. Verify the connector‘s configuration, identify and stop any process that‘s listening on port 80, or
  18. 语音特征提取 matlab,基于matlab的语音信号特征提取方法研究
  19. 数据库(My SQL 、SQL Server)的数据类型
  20. 馆1:图书编码与定位

热门文章

  1. 求离散数据的突变点_数据的离散程度分析1
  2. css鼠标移入线条延中心伸长,jquery鼠标悬浮,显示动态延伸线条,如何在鼠标移开后依然让线条元素延伸到终点...
  3. php 访问url获得返回值,如何在curl php请求中获取数组值作为返回值?
  4. 初中节点法分析电路_有关初中物理电路分析题的一些小技巧
  5. 新项目jenkis配置
  6. php数据库的值嵌入input_求助:问个关于用INPUT提取数据库里的值然后修改的问题。...
  7. 一个事物两个方面的对比举例_《写作教练在你家》:推开写作之门第3课——对比的魔法...
  8. 解决pandas读取parquet报错ImportError:Unable to find a usable engine;tried using: ‘pyarrow‘, ‘fastparquet‘
  9. 替换掉(取消掉)pip freeze 生成的@ file:///格式,变为正常的==版本号
  10. joblib 读取模型后对单条数据做预测并解决Reshape your data either using array报错