STM32(HAL库) CubeMX+Keil5 建立工程
目标选择
- 菜单栏 
  - File 
    - 新建工程
- 打开工程
- 退出软件
 
- Window 
    - 输出窗口的开启
- 软件字体设置
 
- Help 
    - 软件帮助文档
- 检查软件更新
- 管理MCU
 
 
- File 
    
- 已存在工程(Existing Projects) 
  - 最近打开过的工程(Recent Opened Project)
- 打开其他已经存在的工程(Other Project)
 
- 新建工程(New Project) 
  - 基于芯片(Start My Project from MCU)
- 基于ST官方开发板(Start My Project form ST Board)
- 交叉选型 
    - 在STM32的产品线中筛选出一个芯片型号,这个芯片型号与工程师曾经使用过的芯片型号性能和资源等方面最为接近,便于工程师转换到STM32平台进行项目开发。
 
 
- 软件管理(Manage software installation) 
  - 检查软件更新以及MCU固件包的更新(Check for STM32CubeMX and embedded software packages updates)
- 安装/卸载MCU固件包(Install or remove embedded software packages)
 

- 选择基于芯片的方式新建工程,进入芯片/开发板选择界面,选择指定的芯片或开发板型号,或者按照用户的需求,比如处理器内核,产品存储空间的大小,片上外设资源等条件,筛选出满足用户要求的芯片型号或开发板型号。
- 标签页切换 
  - 芯片选择器(MCU/MPU Selector) 
    - 用于选择芯片型号
 
- 开发板选择器 (Board Selector) 
    - 用于使用ST官方的开发板
 
- 交叉选择器 (Cross Selector) 
    - 用于初次使用STM32微控制器的工程师进行硬件平台的转换
 
 
- 芯片选择器(MCU/MPU Selector) 
    
- 筛选器 
  - 直接输入芯片型号或开发板型号进行筛选
- 利用处理器内核、产品系列、存储空间大小以及片上外设资源等组合条件进行筛选
 
- 芯片文档,方便用户快速掌握芯片基本功能 
  - 芯片特性
- 功能框图
- 开发文档
- 数据手册
- 购买途径
 
- 芯片/开发板列表框

- 这里基于STM32F407ZGT6,在芯片型号出输入STM32F407ZGT6,并在芯片/开发板列表框选择对应芯片,双击,点击右上角Start Project即可建立工程。

引脚分配
- 导航栏 用于切换CubeMX的配置操作过程 
  - Home 返回到启动界面
- STM32F411RETx 返回到目标选择阶段
 
- 生成代码(GENERATE CODE) 
  - 当用户完成CubeMX的所有配置后,点击GENERATE CODE就可以生成初始化代码以及工程框架。
 
- 功能标签页 
  - 引脚分配及外设和中间件配置(Pinout&Configuration)
- 系统时钟配置(Clock Configuration)
- 工程设置 (Project Manager)
- 系统功耗估算 (Tools) 
    - 当用户的应用与低功耗相关时,可以进行Tools标签页的设置,而一般的应用只需要进行前三个功能标签页设置即可。
 
 

- Pinout&Configuration 
  - 类别栏,用于外设及中间件配置
- 芯片引脚图,用于引脚分配 
    - 在芯片引脚图上用不同的颜色,来代表了引脚的功能,比如电源用黄色来表示,复位引脚和BOOT引脚用卡其色来表示,GPIO引脚用灰色来表示(复位状态)
 
- 放大/缩小/旋转缩略图
 

- 查找引脚 
  - 用引脚搜索框来快速定位我们所需要进行分配的引脚。
- 在引脚搜索框输入要分配的引脚名称(例如PA5),对应引脚将会闪烁.
 

- 选择引脚功能 
  - 单击PA5将弹出PA5引脚所用有的引脚功能,选择GPIO_Output.
- 此时引脚将变为亮绿色并且引脚的标签将显示为GPIO_Output.
 

外设配置
- System Core:用于配置GPIO、时钟源、中断系统以及其他系统相关的外设
- Analog:用于配置模数转换器(ADC)和数模转换器(DAC)
- Timers:用于配置定时器和实时时钟外设
- Connectivity:用于配置I2C、SPI和UART等连接外设
- Multimedia:用于配置I2S等音频数据传输外设
- Computing:用于配置CRC校验外设
- Middleware:用于配置RTOS和GUI等中间件

- 配置时钟模式 
  - 在System Core找到RCC,点击RCC进入时钟模式配置窗口。 
    - 在配置窗口的上方有两个箭头,可以展开或收起配置窗口
 
- 时钟模式的配置一共有三种选项 
    - Disable:内部时钟(HSI和LSI 片内的RC振荡器提供时钟信号) 
      - 一般存在5%左右的误差,一般不选用
 
- BYPASS Clock Source:旁路时钟 (外部的时钟信号作为时钟源)
- Crystal/Ceramic Resonator:晶振/陶瓷振荡器 (外部的振荡电路产生时钟信号)
 
- Disable:内部时钟(HSI和LSI 片内的RC振荡器提供时钟信号) 
      
- 本次不使用实时时钟模块,故对于LSE(32.768KHZ)不进行设置。
- 完成时钟模式配置之后,对应的引脚将变为亮绿色,同时引脚的功能将设置为OSC_IN和OSC_OUT
 
- 在System Core找到RCC,点击RCC进入时钟模式配置窗口。 
    

- 配置调试接口 
  - 在System Core找到SYS,点击SYS进入调试配置窗口。
- 使用Serial Wire(串行调试接口 依据使用的仿真器情况选择)
- 此时对应的调试接口引脚,将变为亮绿色,引脚功能将变为SWDIO和SWCLK,作为调试接口的数据引脚和时钟引脚
 

- 配置GPIO 
  - 在System Core找到GPIO,点击GPIO进入GPIO配置窗口。
- 选择GPIO标签页,在出现的GPIO列表中选择PA5,单击PA5,将进入PA5引脚配置窗口。
 

- 配置GPIO参数 
  - 初始电平 (GPIO output level)
- 引脚模式 (GPIO mode)
- 上/下拉电阻 (GPIO Pull-up/Pull-down)
- 引脚速度 (Maximum output speed)
- 引脚名称 (User Label)
 

时钟配置
- Clock Configuration 
  - 在这个标签页中以时钟树的形式完整地展示了STM32微控制器的时钟系统,方便用户快速了解STM32微控制器的时钟系统。
 

- 时钟源模块 
  - 外部低速时钟LSE:32.768KHz 
    - 主要提供给片内的RTC实时时钟
- 由于在之前的外设配置中我们没有配置LSE,因此这里显示灰色。
 
- 内部低速时钟LSI:32KHz 
    - 主要提供给片内的RTC实时时钟模块和看门狗模块
 
- 内部高速时钟HSI:16MHz 
    - 主要提供给系统时钟使用
 
- 外部高速时钟HSE: 
    - 振荡模式:4MHz~26MHz晶振
- 旁路模式:1MHz~50MHz信号 
      - 直接接入外部的1MHz~50MHz时钟信号作为时钟源
 
- 主要提供给系统时钟使用
 
 
- 外部低速时钟LSE:32.768KHz 
    

- 时钟配置步骤 
  - 修改时钟源频率 
    - 选择外部高速(HSE)时钟作为时钟源,并修改时钟源频率
 
- 选择锁相环输入时钟 
    - 选择锁相环输入时钟为HSE
 
- 选择系统时钟源 
    - 选择PLLCLK为系统时钟源 
      - 锁相环输出的时钟精度更高,稳定性更好
 
 
- 选择PLLCLK为系统时钟源 
      
- 设置HCLK时钟频率 
    - 一般设置为系统最高支持的主频
 
 
- 修改时钟源频率 
    

工程配置
- Project Manager 
  - Project 工程管理
- Code Generator 代码生成
- Advanced Settings 高级设置
 

- 工程管理 
  - 工程名称
- 工程路径 
    - 完成工程名称和工程路径设置后,将自动在CubeMX文件夹下新建一个名为Demo的文件夹
 
- 选择IDE 
    - MDK-ARM V5(Keil 5)
 
 


- 代码生成设置 
  - 库函数的设置 
    - 复制所有的库到用户的工程中 
      - 需要经常查阅库函数的源代码,故需要复制所有库
 
- 复制必要的库到用户的工程中
- 不进行库的复制,而是将库作为引用参考
 
- 复制所有的库到用户的工程中 
      
- 生成文件设置 
    - 片内外设初始化将采用独立的.c/.h文件完成
 
- HAL库设置 
    - 将所有没有使用的引脚设置为模拟功能,可以优化系统功耗
- 使能断言语句,提升程序健壮性,同时代码量也会增加
 
- 模板设置
 
- 库函数的设置 
    

- 高级设置 
  - 对片内的外设所使用的库函数进行选择,可以选择HAL库或者LL库,默认选择HAL库
- 在Function Name中列出了由CubeMX所生成的外设初始化函数的名称,比如MX_GPIO_Init就是对GPIO进行初始化的函数
- 如果用户不想使用由CubeMX生成的初始化函数,可以在Not Generate Function Call中勾选对应的函数。(是否使用CubeMX所生成外设初始化函数)
 

- 生成工程 
  - 点击GENERATE CODE就可以生成基于MDK-ARM集成开发环境的工程
- 正确生成工程之后,将弹出一个对话框 
    - 如果工程文件未打开则选择“Open Project”,之后就会转到Keil5
- 如果工程已打开则选择“Close”
 
 

参考的成电应电科协 觉得老师讲得很好 就记下来了



















