STM32:预备知识

1, 方法论

  学习STM32的时候需要参考什么资料,应该怎么查找呢?先了解一下大致的框架再系统学习,就算以后忘记很多概念了,重拾起来也容易把;

  1.1 F10XXX中文参考手册:包含寄存器的详细信息,技术参考手册;主要是各种外设的参考信息;

  1.2 Cortex-M3 技术参考手册:关于Cortex-M3核心、SysTick定时器和NVIC的详细说明;

  1.3 Cortex-M3 编程手册:关于Cortex-M3核心、SysTick定时器和NVIC等内核外设的详细说明;主要是内核功能的信息;

  1.4 Cortex-M3 权威指南:对底层及ARM架构的分析,包含部分底层汇编说明;主要参考cortex-xx编程手册;

  1.5 芯片数据手册:芯片功能框架图,地址映射,引脚复用,芯片型号的具体解释;

  1.6 对于stm32相关的参考资料,在官网搜型号,然后点进去即可看到;cube的话直接搜cube,hal库和cmsis软件接口标准包含在STM32CubeH7中;

2 STM32官方提供的库

  STM32官方提供了两种方便底层开放的库,分别是标准库和HAL库;HAL库逐渐取代了标准库的使用;

  后来估计觉得库的效率也很慢,提供了cubeMX来配置HAL库开发;

  2.1 STM32标准库:STM32F10x_StdPeriph_Lib_V3.5.0.zip

    解压后,project目录下为ST官方评估板的例程;Libraries目录下为Cortex-M3的内核代码;我们只需要使用Libraries目录下的文件;

  2.2 Cortex-M3内核的代码架构;

    CMSIS全称Cortex-M3 software interface standard,是API接口标准;

    Libraries目录下的内核代码,将底层寄存器操作封装成API函数,函数符合CMSIS标准的格式;

3 新建KEIL5工程

   keil界面设置:edit->configuration-> editor-> [Encoding:GB2312]  [Tabsize:4]->其他酌情设置;

  3.1 磁盘新建文件夹,从固件库复制各种文件过来

    3.1.1 CORE:用来存放xx_cm3.c内核文件,xx.s启动文件,还有每种芯片自己的xx.h和xx.c文件;

           不用修改,但是每次代码运行的时候都会需要启动文件来配置内存,代码起始位置等等;还是比较重要的;

           配置错误报错举例:error: L6236E: No section matches selector - no section to be FIRST/LAST.(未加入xx.s文件)

    3.1.2 USER:主要是main.c

    3.1.3 HAL:官方hal库,如果用标准库那就命名为FIRM;

    3.1.4 BSP:自己写的各种外设的例程统一放在这里;

  3.2 keil5新建project

    3.2.1 project -> new project -> 命名后保存在USER/workspace中->此时建立完成了keil5工程的框架;

  3.3 映射project到磁盘文件

    3.3.1 target右键->manage project items -> add group -> add file;添加.c文件和CORE目录下的配置文件(xx.h xx.s等)到工程中;

    3.3.2 target右键-> options for target -> C/C++ ->Include Paths添加头文件目录(keil不会递归查找);添加.h文件到工程中

  3.4 project配置

    3.4.1 启动文件的宏配置

       F1:target右键 -> options for target -> C/C++ -> Define: <   STM32F10X_HD,USE_STDPERIPH_DRIVER   >;

       H7:target右键 -> options for target -> C/C++ -> Define: <   USE_HAL_DRIVER, STM32H743xx   >;

    3.4.2 生成hex文件(../USER/objects/)

      target右键 -> options for target -> output -> √ create HEX file; 在 <output> 中可以设置生成的xxx.hex的name,也是xxx.axf的name;

    3.4.3 生成bin文件

      target右键 -> options for target -> user ->  <after build/rebuild> √ Run #1 -> 输入如下格式路径:

      D:MDK5SetupFileARMARMCCinfromelf.exe  --bin  -o  E:STM2_F1CreateDemoUSERObjectsdemo.bin  :STM32_F1CreateDemoUSERObjectscreateDemo.axf

  3.5 软件仿真

    3.5.1 target右键-> options for target -> Debug

        ->[• use simulator]  

        -> [左边的dialog DLL :DARMSTM.DLL  ]    [左边的parameter:-pSTM32F103ZE]   

        -> [右边的dialog DLL :TARMSTM.DLL   ]    [右边的parameter:-pSTM32F103ZE] 

    3.5.2 菜单栏 debug-> start/stop debug session  

    3.5.3 通过虚拟串口查看kei调试的串口;https://www.cnblogs.com/hiker-blogs/archive/2012/03/12/2392273.html

       mode com1 115200,0,8,1  :设置计算机的com1口为串口,后面的数据为串口的配置参数;

       assign com1 <s1in>s1out  :<s1in>s1out表示是单片机的串口1,assign com1表示将串口映射到com1上;

    3.5.4 KEIL5的GPIO仿真:(PORTA & 0X00000002)>>1:仿真输出portA的pin1引脚的值;

                (PORTA & 0X00000004)>>2:仿真输出portA的pin2引脚的值;

  3.6 软件下载

    3.6.1 串口下载使用的软件是flymcu.exe;串口收发数据使用的是xcom.exe或sscom.exe;

      SWD无法下载的原因和解决办法(十分准确): https://www.cnblogs.com/qdrs/p/10574867.html

4 零散知识

  (1)复用表示一个IO口有多个外设功能,通过复用来选择IO口的外设功能;

  (2)重映像就是重映射;就是把一个IO口的功能映射到另一个IO口上去;

  (3)1ul << 18 表示将无符号长整形的1左移18位,即第18位置1;

  (4) 使用memset( )需要包含头文件#include<string.h>;

  (4)STM32芯片型号说明,芯片的硬件信息还可以看选型手册和数据手册;

  

 5 软件安装

  5.1 对于keil-MDK而言,先安装keilXXX.exe,安装的是集成开发环境;然后安装pack包,安装的是对应器件的固件支持包;

  5.2 对于cubeMX而言,先安装cubemx软件;然后在cube软件中help>embedded...安装对应器件的pack包;

原文地址:https://www.cnblogs.com/caesura-k/p/12782223.html