0%

stm32_note_02day

============================
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.在满足第一点的条件下,其他外设资源越少越好