STM32-HAL库(快速入门)-1-工程创建
适合学习过标准库和一些简单操作的同学转至HAL库,不会写的太细,想仔细学习建议看正点原子140小时的详细教学视频
考虑到stm32库函数学习的繁琐与备赛时间紧张之间的矛盾,我打算用HAL库来快速入门操作stm32,并且由于学校开启了为期三周的课设实验周,所以我打算将这个系列在三周内更完,内容包括stm32f4常用外设的使用和f1两轮平衡小车的pid调节
代码文件:
链接:https://pan.baidu.com/s/17yKo4c2FzqKtiXnXRQfy8g?pwd=hjv7
提取码:hjv7
目录
一、cubemx和固件库安装
二、新建工程
1.选择(ACCESS TO MCU SELECTOR)进入芯片类型选择
2.选择我们使用的stm32f407zgt6芯片
3.基础配置
Ⅰ.Pin-configuration
Ⅱ.Clock-configuration
Ⅲ.Project-configuration
Project
Code Generator
Advanced Settings
Ⅳ.Tool
4.生成代码
三、新建文件夹解析
Core:
Drivers
MDK-ARM
ioc
一、cubemx和固件库安装
跳过
二、新建工程
1.选择(ACCESS TO MCU SELECTOR)进入芯片类型选择
2.选择我们使用的stm32f407zgt6芯片
3.基础配置
可以看到,cubemx的界面还是相当清晰明了的,先简单介绍一下,基于篇幅原因后续再展开介绍
Ⅰ.Pin-configuration
System Core:配置系统内核里的外设
DMA:直接存储器访问。可以不经过CPU直接把一块区域的数据直接复制到另一块区域中,这样就节省了CPU的资源,让CPU做一些更复杂的工作。
GPIO:通用输入输出端口。可以理解为一个电平点,你可以让它输出高电平or低电平
IWDG:独立看门狗。如果系统故障一段时间,它会自动另系统复位
NVIC:中断管理系统。可以管理每一个需要中断的线
RCC:时钟配置
SYS:配置debug模式
WWDG:窗口看门狗
Analog: 包含ADC and DAC功能配置
Timers: 32最nb的外设——定时器
Connectivity: 一些与其他外部设备交流的方法,包括CAN,I2C,SPI,USART等通信
pin中,基础配置只需要配置RCC和SYS即可
RCC:高速时钟和低速时钟均选择使用外部晶振
master clock output选择后在一个引脚可以同步输出时钟,暂时不需要勾选
SYS:配置使用串口进行debug
Ⅱ.Clock-configuration
配置32时钟,32的程序是一步一步进行的,那怎么个节奏来执行呢?就通过时钟来配置,若1hz频率,那代码里的代码就是1秒执行一行,这里我们直接配置上F4的最高速168M,不同芯片下面都会有提示最大的是什么
输入168,回车,会提示是否需要自动配置,我们选择ok,系统就会自动配置分频器达到168M
Ⅲ.Project-configuration
Project
project中可设置项目名称、路径、IDE 类型
toolchain/ide :由于我们用的是keil,所以选择mdk-arm版本最新即可,下面全部默认
Code Generator
第一部分:
1. 复制所有的库文件到工程目录中;2. 只复制必须的库到工程目录中
电脑速度快选1,如果电脑较卡选2
第二部分:
每个外设有单独的 .c/.h 文件,即将外设的配置文件单独配置成两个文件供我们调用,初学者必选
Advanced Settings
可选 HAL 库和 LL 库(HAL 编译后文件大,LL 编译后文件小)一般全HAL
Ⅳ.Tool
不用动
4.生成代码
单击generate code
可选择打开路径或直接打开工程或close关闭不做操作
三、新建文件夹解析
Core:
存放了CubeMX生成的外设代码文件
Drivers
存放了HAL库文件、芯片内核文件。
MDK-ARM
存放了Keil的工程入口文件、调试文件、编译输出文件等。
ioc
点击可以回到cubemx配置工程
进入MDK-ARM后则可以找到uvprojx文件,单机后则可进入cubemx新建的程序之中
新建成功,可以找到main函数进行编程了
注意:
main中要在user code begin和user code end之间编写才不会在重新配置cubemx之后被清除掉
有什么问题可以直接在底下评论
作者:ZTL-chd