第一天

一、搭建开发环境

会有详细文档说明,相关资源文件请后续见github:ZikeCao

二、STM32固件库移植

1.单片机MCU

单片机:Mrico Ctrl Unit 微型控制单元是一类功能简单但非常实用的处理芯片的统称,比如:

51系列:指基于8051内核衍生出的各种单片机芯片
AT89C51/AT89C52、STC89C51/STC89C52
cc2530(ZigBee)ESP8266(WIFI)……
8位单片机
STM32:指基于ARM公司Cortex-M内核衍生出的各种单片机芯片
ST:意法半导体公司
STM32F4xx、STM32F1xx 、STM32F7xx ……STM32Gxx
32位单片机

位:指芯片同时处理数据量的大小
8位: 芯片同时可以处理8bits的数据
位同时还限定了 寄存器的大小、地址总线的大小

2.STM32

ST意法半导体公司根据ARM公司的Cortex-M系列的芯片研发出来的一款高性能的单片机芯片。
本次实习采用的是STM32F407zet6芯片。

3.单片机的开发

单片机之所以简单,是由于所有单片机都处于“裸奔”状态“裸奔”:没有操作系统单片机的程序设计,是通过直接访问内部硬件寄存器来实现对硬件的操作。
单片机的开发主要有两个方向:

1) 单片机电路设计:负责设计基于某款单片机芯片的系统电路,和功能所需要的外围电路;
2)单片机程序设计:负责基于某款单片机平台进行程序设计,以实现用户所需要的功能。

本次实习主要是完成 基于STM32的智能小车 程序设计。

4.STM32程序设计

STM32单片机的程序设计有三种模式
1) 两层模式

直接通过编写寄存器操作程序,来控制硬件工作,以 完成所需功能的设计

程序设计语言:汇编、C语言
难点:寄存器太多,难记也难找

2)三层模式

也是通过直接操作系统器来实现,区别在于,可以利用已经做好的第三方库来借助不同的 接口技术来实现对寄存器操作,无需去深度的掌握寄存器的内容

比如:ST公司在研发出STM32系列芯片的同时,开奖该系列所有的单片机寄存器及其操作封装成了一整套的接口技术、固件库

3)操作系统

STM32虽然是款单片机,但由于其性能已经足够强大,因此可以移植并运行特定的操作系统
比如: UCOS 、FreeRTOS

5.固件库的移植

固件库 通常是指基于某个平台而封装的大量操作接口的一种库文件。
ST公司为了让更多人能够使用其公司出售的芯片,ST公司提供了几套官方库:标准库、HAL、MT库 等。
在这里插入图片描述
如图为移植好的STM32标准库程序

三、程序编辑、编译和下载

由于编译部分比较简单,先从编译开始,以STM32自带的示例程序进行演示demo

1.编译

在keil中创建工程,并打开移植好的固件库程序,设置好后执行编译
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.下载

串口下载是指通过串口线直接将编译生成的hex程序文件烧写到单片机芯片中
步骤:

1)链接开发板与PC

利用双头USB线,链接开发板与PC机

2)安装USB转串口驱动
在这里插入图片描述
在这里插入图片描述
3)MCUFLY烧写程序
在这里插入图片描述
烧写时跳线帽的链接方式:
在这里插入图片描述

3.编辑

keil自带编辑器,但是 STM32固件库的接口名很不友好(名称太长、太杂)因此,我们需要一款智能编辑器 --> VSCode/SourceInsight4

下面以SourceInsight4为例
(因为VScode里还要再添加一遍头文件,感觉比较麻烦,也可能是自己没有用VScode写c语言打开方式不对)

创建一个sourceinsight工程,管理STM32固件库的源码,步骤如下图所示。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

四、OK !

第一天的基本学习就完成了,早睡早起明天湖南天气预报有大雪。

Logo

惟楚有才,于斯为盛。欢迎来到长沙!!! 茶颜悦色、臭豆腐、CSDN和你一个都不能少~

更多推荐