STM32F407 HAL库使用(STM32CubeMX)---基础篇(一)

695 阅读2分钟

前言

经过一段时间的项目开发,趁热打铁,记录一下STM32CubeMX的创建以及配套芯片库基本模块的配置

第一章

第一节 新建工程

  1. 方式一 在主界面选择File-->New Project
  2. 方式二 直接在主界面点击ACCESS TO MCU SELECTOR 如果有现有的工程可以直接打开**.ios**文件 image.png

第二节 搜索芯片型号

MCU/MPU Selector页面Commercial Part Number搜索自己需要的芯片型号; image.png 双击芯片型号进入下一步

Pinout&Configuration

Categories下列相对应的配置,看图看图 image.png

A->Z 可配置项从A-->Z排序,也可以选择这种方式,简单哈哈哈 image.png

Clock Configuration

配置时钟页面,我选用的是8MHz的外部晶振,如果刚好你也是8MHz的,可以直接拿去用,其他的可以根据自己外部晶振时钟配置 选择HSE外部晶振 image.png

Project Manager

Project image.png Code Generator image.png 最后一步点击GENERATE CODE 生成工程,需要等待几分钟 那么到目前为止已经完成一个基本工程的创建了;

第二章

基本的外设配置,这里例举常用的配置CAN,SPI,USART,I2C

CAN配置

这一章节最主要的就是CAN的工作频率配置了 CAN是挂在APB1的总线上的,所以时钟是42MHz 工作频率配置 APB1总线时钟/Prescaler(for Time Quantum)/[(Time Quanta Bit Segment 1)+(Time Quanta Bit Segment 2)+ReSynchronization Jump Width] 42MHz / 7 / (9 + 2 + 1) = 0.5MHz = 500KHz image.png

SPI配置

注意spi1的工作频率比较高可以达到42M,其他的spi工作只有大概21M记不清楚了(具体参考数据手册)

主机配置 image.png

从机配置 image.png

USART配置

这个配置,只需要修改波特率就OK image.png

ADC配置

需要勾选上百年的IN通道,才能出现相对应的ADC配置 image.png

FreeRTOS配置

还有一个实时操作系统的懒人移植方法 我这里选用了V2,简单理解就是V2更强大,一般的V1就够用了 image.png

CMSIS_V1和CMSIS_V2的区别

CMSIS_V1:

Common API for real-time operating systems along with a reference implementation based on RTX. It enables software components that can work across multiple RTOS systems. 用于实时操作系统的通用API以及基于RTX的参考实现。它使软件组件能够跨多个RTOS系统工作。

CMSIS_V2

Extends CMSIS-RTOS v1 with Armv8-M support, dynamic object creation, provisions for multi-core systems, binary compatible interface. 扩展CMSIS-RTOS v1,支持Armv8-M,动态对象创建,提供多核系统,二进制兼容接口。

内存和Flash占用情况

在只用stm32cubemx生成freertos代码的情况下内存对比:

CMSIS_V1: Program Size: Code=5160 RO-data=476 RW-data=116 ZI-data=4940

CMSIS_V2: Program Size: Code=8544 RO-data=484 RW-data=140 ZI-data=7388