============================
2022-8-16
============================
一.温故知新
1.搭建了物联网项目框架
感知层 智能终端设备的裸板驱动
STM32F103RBT6
网络层 WiFi模块
平台层 华为 OceanConnect//太繁琐(安全性高)
小米 小米IoT//企业用户
阿里 AIoT//繁琐(安全性高)
百度 天工//添加设备丰富
移动 OneNet//简单
联通 中国联通物联网//没用过
东方瑞通 ESLink
应用层 只要是提供了云平台都会提供应用层的APP
2.在基础版本的物联网项目框架中引入边缘计算设备
3.两个分支
智能终端设备
边缘计算设备
4.安装开发环境
学习的时候注重的是过程
工作的时候注重的是结果
二.从表象到里象的方式了解开发板
1.从外观入手(查看配件有哪些以及芯片的型号)
打开<STM32RBT6\开发板原理图>目录下<stm32-mix.jpg>
2.了解芯片的结构
通过画图了解
无论是SOC(高端的芯片)还是MCU(单片机芯片)
都是可以自己组成微型的计算机系统
STM32F103RBT6 = CPU + 内存 + 硬盘 + 外设
CPU = ARM-CORTEX-M3(用来做大量计算,处理数据)
内存 = 运行程序时会占用的空间
硬盘 = 保存烧写的程序
外设 = 操作芯片功能的接口
01MCU内部结构
S5P6818 = CPU + 内存 + 硬盘 + 外设
CPU = ARM-CORTEX-A53(用来做大量计算,处理数据)
内存 = 运行硬盘中固件会占用的空间
硬盘 = 存储的是芯片厂商烧写好的固件(Read Only)
外设 = 操作芯片功能的接口
注意 : 高端芯片外部需要外接内存,外接硬盘
01SOC内部结构
三.介绍ARM公司和ST公司
ARM公司是在英国剑桥成立,在2016年年底被日本软银收购
嵌入式领域芯片架构
曾经三足鼎立
PPC 游戏机/掌机
MIPS 路由器/交换机、网络探头
ARM 手机
现在
MIPS
ARM 各种电子产品
ST公司,意法半导体公司,在2020年国家统计数据,
咱们国家使用ST公司的芯片NO.1
四.开发方式
1.传统开发方式
使用C语言的位运算符操作芯片外设的寄存器
<< >> & | ~ ^
对于驱动开发工程师来说容易出错
需要驱动开发工程师写驱动 + 业务逻辑
2.流行开发方式
使用ST公司的官方固件(LIB库)
涉及到函数调用即可
需要驱动开发工程师写驱动 + 业务逻辑
3.未来开发方式
使用STM32CUBEMX开发工具 + 官方固件(HAL库)
涉及到函数调用即可
需要驱动开发工程师写业务逻辑
五.搭建模板项目工程
1.模板项目工程只有在刚开始会教大家搭建,后面的项目工程直接拷贝使用
2.搭建模板项目工程的流程必须要会
3.搭建模板项目工程的方法并不唯一
前提准备 : 把Windows系统下,文件的扩展名显示出来
1.创建目录结构
在<桌面>上新建文件夹,重命名为<stm32f103>
在<桌面\stm32f103>目录中新建文件夹,重命名为<01test>
在<桌面\stm32f103\01test>目录中新建文件夹
cmsis 存放有关arm-cortex-m系列的文件
fwlib 存放的是ST公司的官方固件
mylib 存放的是程序员自己写的固件
project 存放的是项目工程文件
user 存放的是主文件
<STM32RBT6\ST官方固件\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\CoreSupport>目录下的所有文件
拷贝到
<桌面\stm32f103\01test\cmsis>
<STM32RBT6\ST官方固件\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm>
目录下的<startup_stm32f10x_md.s>
拷贝到
<桌面\stm32f103\01test\cmsis>
<STM32RBT6\ST官方固件\STM32F10x_StdPeriph_Lib_V3.5.0\Libraries\STM32F10x_StdPeriph_Driver>目录下的<inc>和<src>
拷贝到
<桌面\stm32f103\01test\fwlib>
<STM32RBT6\ST官方固件\STM32F10x_StdPeriph_Lib_V3.5.0\Project\STM32F10x_StdPeriph_Template>目录下的
<main.c> <stm32f10x_conf.h> <stm32f10x_it.c>
<stm32f10x_it.h> <system_stm32f10x.c>
<system_stm32f10x.h>
拷贝到
<桌面\stm32f103\01test\user>
2.通过Keil搭建项目工程
Define
STM32F10X_MD,USE_STDPERIPH_DRIVER
1>在桌面上运行KEIL软件
2>如果默认打开的keil界面显示的是上一次的项目工程可以在keil的菜单栏<Project>中选择Close Project
3>在keil的菜单栏<Project>中选择New μVision Project
4>弹出了Create New Project对话框,选择新的项目工程创建的位置(选择之前项目工程创建的位置)
5>弹出了Select Device For Target对话框,可以在Search这一栏录入要操作的芯片型号<STM32F103RB>
6>点击左下角显示的找到的芯片型号,右边Description显示了芯片信息之后,点击OK
7>会弹出Manager Run-Time Environment的对话框,直接关闭
8>把keil默认的项目工程的层次结构调整成和windows下自己搭建的层次结构一致
9>点击第三行菜单栏中的Manager Project Items
A>在Project Targets这一栏中,把Target 1 修改成 Target //注意:双击蓝色的这一条可以编辑
B>在Groups这一栏中,把Source Group1去掉,添加上cmsis fwlib mylib user 4个组
C>首先在Groups这一栏中,选择cmsis这个组,然后在对话框右下角点击Add Files
D>弹出对话框<Add Files To Group 'cmsis'>,默认的查找范围是project,找到自己创建的cmsis目录
//注意:在这一步添加文件,只需要添加.c .s文件即可,不需要添加.h文件
E>在cmsis目录中选择core_cm3.c文件和startup_stm32f10x_md.s添加到cmsis组中即可
F>选择fwlib的组继续添加文件,找到stm32f10x_rcc.c文件,添加到fwlib组中
G>选择user的组继续添加文件,找到main.c stm32f10x_it.c system_stm32f10x.c,添加到user组中
H>在Manager Project Items的对话框中点击OK
I>在keil界面的左边的Project栏中,找到main.c文件,双击打开
J>在main.c文件中全选文件内容,全部删掉,加入自己写得main函数//注意:在文件最后一定要多加几个空行
K>在keil的第三行菜单栏中选择 Options for Target 'Target'这一项
L>在对话框中选择C/C++这一项,在Define:这一栏中填入 STM32F10X_MD,USE_STDPERIPH_DRIVER
M>在C/C++这一项中,找到Include Paths,在这一项中添加头文件的路径
N>在Include Paths这一行最后有一个三个点的按钮,点击,弹出Folder Setup对话框
O>在Folder Setup对话框中选择4个路径即可 cmsis fwlib\inc mylib user
P>添加完之后,点击OK,跳出对话框
Q>开始编译项目工程,点击keil的第三行菜单栏的Rebuild的按钮
R>在keil中设置仿真器,(1.安装仿真器的驱动 2.把开发板连接到电脑上 3.开发板上电)
S>在keil的第三行菜单栏中选择 Options for Target 'Target'这一项
T>在Options for Target 'Target'对话框的菜单栏中选择Debug,在Debug菜单中的右测下拉菜单中选择ST-Link Debugger
U>选择ST-Link Debugger之后选择之后的Settings按钮,弹出Cortex-M Target Driver Setup对话框
V>如果在SWDIO中确定有一串十六进制的数字,那么keil识别了开发板的仿真器
W>在Cortex-M Target Driver Setup对话框中选择,Flash Download菜单,在Download Function中选择上Reset and Run
X>在对话框中选择OK,退出对话框
Y>在KEIL的第三行菜单栏中选择 Download 按钮,下载程序(确保程序编译没有错误没有警告)
=================================
1.重新搭建项目工程
=================================
六.通过数据手册了解芯片内部的结构
1.通过数据手册了解芯片内部外设的数量
打开<STM32RBT6\DataSheet\STM32>目录下<ST_MCU最新选型手册.pdf>
硬盘 128Kb
内存 20Kb
封装形式 64管脚的封装形式
定时器 4个16bit的定时器(普通定时器) + 其他定时器
2个看门狗、实时时钟、24bit向下计数定时器
ADC(模/数转换器) 16×12bit
GPIO 51个
串口 2个SPI、2个I²C、3个USART/UART、
1个USB、1个CAN
电压范围 2.0V - 3.6V
<最新选型手册>在公司中是在项目立项的时候会使用(技术总监、组长)
1.你选择的芯片的外设资源可以满足你的所有需求
2.在满足第一点的条件下,其他外设资源越少越好