(一)ARM和STM32
    1》ARM的含义:
            1,是一家公司的名字—-生产内核(IP)—-专利授权盈利
            2,是使用ARM内核的芯片的代称
    2》ARM内核的分类
        ARM7,ARM9,ARM11
        
        1,Cortex-A   针对计算量比较大,有交互性的界面的领域  —-手机,平板,投影,电视
        2,Cortex-R   针对实时性比较高的领域    —–汽车刹车,航空航天
        3,Cortex-M   针对微控制器领域  —-MCU
        
    3》STM32F103RCT6
        是ARM Cortex-M3内核的芯片
        ST:意法半导体公司
        M:  MCU
        32:32位,一次性处理数据的多少bit
        R:    引脚数
        C:    flash-256KB  和启动文件的选择有关系
        T:    封装,封装为TQFP
        6:    温度

        
    4》Cortex-M 系列芯片在STM32中的分类
    5》芯片里面有什么?
        1,内核—CPU
        2,外设—片上外设:外设位于芯片内部,内核外部
            
            片外外设: 外设位于芯片外部
        (芯片的控制原理:利用内核,驱动片上外设,控制片外外设)

    6》Cortex-M 内核是哈佛架构:指令存储和数据存储是分开的
                             冯若伊曼架构:指令存储和数据存储是不分开的

=========================================================================
(二)开发方式—-STM32
    1》寄存器开发—(寄存器:具有特殊功能的内存单元)
    2》标准外设库开发—(目前ST公司不再维护升级)
    3》库开发:1,cube开发—-STM32CubeMX
               2,LL库
               
    开发方式大比拼:
                        开发难度         可维护性      代码执行效率
    寄存器开发            最难               最难          最高
    标准外设库开发        适中               适中          适中
    cube开发              最简单           最高          最低
    LL库                  较难               较难          较高
    
=========================================================================
(三)开发环境的搭建
    keil                + Source Insight
    MDK(集成开发环境)   代码编辑器
    
    注意事项:
        1,右键以管理员身份运行
        2,路径不要有中文
        3,名字不要有空格
=========================================================================
(四)基于标准外设库新建一个工程

    stm32F10x_StdPeriph_lib_V3.5.0   (ST公司发行的stm32F10x标准外设库的最后一个版本)

    1>打开文件夹(有以下内容)
    _htmresc                (logo)(CMSIS软件接口标准)
    Libraries                 库文件(移植的重点)(以前大家在Ubuntu用c库的函数,现在我们需要用ST公司提供的库文件,所以需要移植到工程目录中)
    Project                  驱动示例代码(ST公司写的一些例子,一般需要匹配ST公司的开发板,可以作为参考,不能直接移植)
    Utilities                  开发板例子程序(这个例程完全依赖开发板,也是只能作为参考)
    Release_Notes,html        固件库发行说明(类似日志文件,版本更新文件)
    Stm32f10_StdPeriph_lib_um.chm   固件库使用说明文档(对固件库中所有函数说明,英文文档,老师提供了一个中文的文档STM32固件库使用手册_v3.5版本)

    2>移植的重点(Libraries文件夹)
    STM32F10x_StdPeriph_Driver  片上外设程序所在文件夹(加载的重点)在此文件夹下:
    Inc    片上外设的头文件 (.h)
    Src    片上外设的源文件 (.c)
    CMSIS:包含了启动文件,开发所依赖的的配置,时钟等(重要)CMSIS中的文件:
    CM3文件夹下
    CoreSupport文件夹
    Core_cm3.c:包含的是一些内核相关的函数和宏定义
    Core_cm3.h: 包含的是一些内核相关的函数和宏定义的头文件
    DeviceSupport文件夹
    ST文件夹
    STM32F10x文件夹
    Startup文件夹下
    Arm文件夹下
    Startup_stm32f10x_hd.s:(引导启动文件,容量决定)
    Stm32f10x.h:实现了所有硬件寄存器结果,地址映射,寄存器位操作,基本定义。
    System_stm32f10x.c:系统启动初始化,尤其是时钟。
    System_stm32f10x.h:系统启动初始化,尤其是时钟的头文件。

常见错误截图:

        STM32如果跑裸机的话,它是没有操作系统的,所以main函数不能结束(不能return),如果结束了,程序就终止了,那么就死机了。所以,我们用while(1);放在main程序末尾,用它来代替return。


版权声明:本文为qq_39577221原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/qq_39577221/article/details/125123087