首页 > 其他 > 详细

STM32:软件编程预备知识

时间:2020-05-13 21:43:50      阅读:52      评论:0      收藏:0      [点我收藏+]

1, 方法论

  1.1 STM32 F10XXX中文参考手册:包含寄存器的详细信息,技术参考手册;

  1.2 Cortex-M3 权威指南(中文版):对底层及ARM架构的分析,包含部分底层汇编说明;

  1.3 Cortex-M3 技术参考手册:如名;

  1.4 STM32F10xxx Cortex-M3 编程手册:软件开发层完整的寄存器编程说明;

  1.3 芯片数据手册:电气特性,引脚说明,复用重映射引脚等;

  1.4 正点原子开发板:资料详尽;

2 STM32固件库:STM32F10x_StdPeriph_Lib_V3.5.0

  2.1 主要包含了Cortex-M3的内核代码、进入内核的代码、flash芯片的寄存器堆栈配置;

    为ST官方提供的标准库,将底层寄存器操作封装成API函数,函数符合CMSIS标准的格式;固件包内的源码同时提供了使用例程;

    ST官方提供了两个库版本,一个是标准的固件库,另外一个是HAL库;HAL是14年推出的,并且逐渐开始取代标准库;

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

    CMSIS全称Cortex-M3 software interface standard,是API接口标准;以下为STM32芯片的core cm3内核的代码架构示意图;

    技术分享图片

3 新建KEIL5工程

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

   双击变量,ctrl+F >> 可以在当前文件中查找该变量;

  3.1 磁盘新建文件夹,包含CORE,USER,FWLIB ;从固件库复制文件进来;

    3.1.1 CORE目录:<core_cm3.c>  <core_cm3.h>  <...hd.s启动文件>...

    3.1.2 USER目录:<system_stm32f10x.c系统时钟寄存器,宏定义等>  <stm32f10x_it.c中断>  <main.c>...

    3.1.3 FWLIB目录:<一类外设对应一个.c文件> <stm32f10x_gpio.c> <stm32f10x_i2c.c>...

  3.2 keil5新建工程,映射到3.1节文件夹,添加文件;

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

    3.2.2 target右键->manage project items -> add group -> add file;(顺便也加了.h文件进来方便查看)

  3.3 设置固件库的启动文件的宏定义,头文件的路径,生成hex文件(../USER/objects/),生成bin文件;

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

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

    3.3.3 target右键 -> options for target -> output -> √ create HEX file;

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

      D:\MDK5\SetupFile\ARM\ARMCC\bin\fromelf.exe  --bin  -o  E:\STM32_F1\CreateDemo\USER\Objects\createDemo.bin  E:\STM32_F1\CreateDemo\USER\Objects\createDemo.axf

  3.4 软件仿真:通过软件仿真查看寄存器数值,执行代码;

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

        ->[• use simulator]  

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

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

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

4 零散知识

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

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

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

 

STM32:软件编程预备知识

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!