• 单片机第三季-第三课:STM32开发板原理图、配置、浮点运算单元


    目录

    1,开发板原理图

    2,浮点运算单元(FPU) 


    1,开发板原理图

    课程视频比较早,介绍了三款开发板。观看视频时用的开发板说和51单片机共板的STM32核心板,将51单片机从底座拆下来后,安装上STM32核心板。

    ISP原理回顾:
    第1步:先设置BOOT1和BOOT0从系统区启动,执行系统中预设的程序;
    第2步:主机通过串口发送要下载的hex文件给STM32;
    第3步:系统预设的程序接收到hex后将其烧录到用户区flash中;
    第4步:设置BOOT1和BOOT0为从用户区启动,然后复位重启执行刚才下载的hex即可。

    如何设置BOOT1和BOOT0使STM32从系统区或者用户区启动,见下图:

    核心板的自动下载电路:

    核心板通过USB连接电脑后,下载程序的上位机可以通过RTS和DTR分别控制BOOT0和NRST引脚;

    自动下载即上位机下载软件通过控制RTS和DTR引脚,间接控制BOOT0和NRST,完成下载程序和复位启动。

    复位电路:

    复位电路可以实现上电复位和RSTK复位按键复位。 

    2,浮点运算单元(FPU) 

    浮点运算即存在float或double类型数据的加、减、乘、除运算;

    浮点计算的2种实现方法:软浮点、硬浮点;

    编译环境支持浮点库,可以将用C语言写的浮点数运算转成整形运算,对于单片机来说根本不知道float、double这回事,所以单片机不需要有专门的浮点运算单元就可以算浮点数了,但通过编译将浮点运算转化为整形运算时会增加代码量。

    STM32F4系列支持硬浮点计算,因为其内部有相应的硬件电路,可以直接输入浮点数进行计算,但其有两个例外:

    1、F4内部FPU只能算float不能算double;
    2、F4内部FPU只能算float的简单加减乘除,不能算float的sin、cos等复杂运算;

    我们编程时不需要考虑CPU的软浮点或者硬浮点特性,直接用C编程实现功能,然后设置好后直接编译,按照这样的规则帮我编译:我的浮点运算可以用硬浮点时用FPU(在编译环境中,如KEIL中有相应的选项可以设置,Single Precision即指只支持float类型运算,有的显示为FPU),如果不能用硬浮点就自动用软浮点来实现。

    需要注意的是,只有选择具备FPU的MCU时(例如STM32F4系列),才会出现Floating Point Hardware选项。 

    对于不支持FPU的MCU(例如STM32F1系列),存在float类型运算时,在编译时会将float运算转换为整型运算,因此生成的HEX文件会比支持FPU时的HEX文件要大。

    项目中用到大量double浮点时或者大量sin cos时,F4的FPU是无效的,这时建议用F1+DSP。

    参考《Cortex M3与M4权威指南.pdf》。

  • 相关阅读:
    LeetCode·每日一题·
    PostgreSQL修炼之道笔记之准备篇(三)
    美国疾控中心:持续减肥,降低32%患癌风险,降低48%癌死亡风险
    写给这批≥30岁的测试工程师
    节省草稿纸的方法
    评论列表案例,通过Ajax向服务器发送请求
    SpringBoot框架分层(View层、Controller层、Service层、Mapper层、pojo层)
    SpringCloud Alibaba - Seata 四种分布式事务解决方案(XA、AT)+ 实践部署(上)
    如何实现IT基础设施的全面监控和智能运维?
    【面试系列】Java面试知识篇(三)
  • 原文地址:https://blog.csdn.net/weixin_47207479/article/details/132993284