找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6687|回复: 0
打印 上一主题 下一主题
收起左侧

KEIL建立stm32以及仿真器的接口含义

[复制链接]
跳转到指定楼层
楼主
ID:385288 发表于 2018-8-21 21:41 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
       
网上搜索了一些方法,汇总了下,挑选了一个可行的写出来,如下。

1、新建工程!Project → New  uVision Project,保存。

2、选择芯片型号!。这里用:STM32F103C8。

3、提示是否拷贝,选择否!


4、新建文件夹!在工程文件根目录下新建几个文件夹:User、CMSIS、Lib、Obj、List(这里是为了养成良好的习惯!)User放置用户代码;CMSIS放置固件库的启动文件,Lib放置库文件

PS:普及(CMSIS:Cortex Microcontroller Software Interface Standard,是 ARM Cortex 微控制器软件接口标准,是ARM公司为芯片厂商提供的一套通用的且独立于芯片厂商的处理器软件接口。)

5、拷贝!把固件库的Libraries \ STM32F10x_StdPeriph_Driver目录下的inc和src这两个文件夹复制到刚才新建的Lib文件夹中。
   将固件库的Libraries \ CMSIS \ Core \ CM3文件夹下的全部文件复制到刚才新建的CMSIS文件夹中,Startup / arm目录下一般有三个启动文件,分别为,startup_stm32f10x_ld.s,startup_stm32f10x_md.s,
startup_stm32f10x_hd.s,按顺序是小,中,大容量Flash单片机的启动文件。我们这里用的是
STM32F103C8有128 K Flash。所以,稍后,把startup_stm32f10x_md.s添加到我们的工程中。不同大小的Flash对应的启动文件不同,这点要注意。

    最后,用户的代码(例如main.c)都放在User文件夹下。

6、建组!鼠标右击“Target1”→Manage Componets,弹出如下的对话框,在中间列依次建立:CMSIS、Lib、User文件夹,将原有的Source Group1改为startup,并在最右列依次添加所需要的文件。
    Startup中startup_stm32f10x_md.s文件,在USER组里添加main.c,stm32f10x_it.c这两个文件,在FWlib组里面添加src里面的全部驱动文件。

PS:src里面的驱动文件,也可以需要哪个就添加哪个,这里全部添加,是为了后续开发的方便。并且,我们可以通过配置stm32f10x_conf.h文件来选择性添加,只有在stm32f10x_conf.h中被配置的文件才会被编译。
PS:注意,在组里面添加的,都是汇编文件和C文件 ( 即,以 .s和 .c为后缀的文件 ),即,都是源程序文件 ( 可能还有其它类型的文件,但是,都必须是源程序文件 ),并且,一般地,所有源程序文件都必须添加到组里面才行。但是,头文件是不需要添加到组里面的。

7、设置!右键“Target1”→Options For Target “Target1”,弹出下面的对话框。
   ①点击“Output”选项卡,点击“Select Folder for Objects”按钮,可以为编译时产生的输出文件,设置一个文件夹“Obj”,把这些输出文件都输出到该文件夹下。还可以把“Creat HEX File”选项框勾上,这样,就可以在编译时,输出16进制的可执行文件了。

   ②点击“Listing”选项卡,点击“Select Folder for Listings”按钮,可以为编译时产生的链接文件,设置一个文件夹“List”,把这些链接文件都输出到该文件夹下。

   ③点击“C / C++”选项卡,这里有两个设置很重要 (“Define”和“Include Paths”,如下图 ),设置不对,编译会出很多错误。另外,下图中的“One ELF Section per function”一般要选上。
      Define是设置,预定义符号,在这里定义符号,相当于在程序文件中使用 #define 语句定义符号。这里一般要填入以下内容:USE_STDPERIPH_DRIVER, STM32F10X_HD, USE_STM3210E_EVAL其中,定义了USE_STDPERIPH_DRIVER就可以使用,标准外设驱动。定义了STM32F10X_HD,就可以对固件库进行条件编译。定义了USE_STM3210E_EVAL,就可以使用ST公司的官方评估板作为硬件来下载,调试程序,这个宏,一般可以不定义,因为我们很少使用ST公司的官方评估板。

PS:注意:定义STM32F10X_HD,是因为我们用的芯片是大容量的。添加了STM32F10X_MD这个宏以后,库文件里面为大容量芯片定义的寄存器,我们都可以使用了。芯片是小容量,或者,中容量时,宏要换成,STM32F10X_LD或者STM32F10X_HD。其实,不管什么容量,我们只要添加STM32F10X_HD这个宏即可。当我们用小,或者,中容量的芯片时,那些为大容量定义的寄存器,不去访问就是了,反正,也访问不了。

        Include Paths是设置,头文件的搜索路径的。我们的工程中,用到的头文件在哪个路径,就把该路径添加进来。有时,也可以根据编译错误,发现哪些头文件,编译器找不到,再把这些头文件的路径添加进来。一般要填入的路径有以下一些,每个不同的路径以分号间隔:“ ..\ ”表示工程根目录。
例如:..\..\..\Libraries\STM32F10x_StdPeriph_Driver\inc;这里主要有几个必须要添加,一是inc的库,也就是头文件库;二是CMSIS的路径必须要添加!
PS:注意:因为编译器不会自动搜索指定目录的子文件夹,所以每个路径都要添加,就算,路径1是路径2的子目录,路径1和路径2都必须同时添加,才行。 在添加目录时要注意,在下图界面下,必须把蓝色条移到最后的空白处,再点击“OK”,最后一个路径才能被添加成功,否则,最后一个路径会丢失。



    ④点击“Debug”选项卡,选中左边的Use Simulator,就是使用软件仿真模式调试,选中右边的Use,就是使用硬件仿真,调试。由于我们多使用开发板加J-Link调试,所以选中“Cortex–M / R  J-LINK / J-Trace”项,其它选项,默认即可。如下图。

    ⑤点击“Utilities”,选中“Use Target Driver for Flash Programming”,在它下面选择“Cortex–M / R  J-LINK / J-Trace”项。其它设置,默认即可。如下图。


    ⑥在上图的界面中,点击“Settings”按钮,弹出下面的对话框,添加Flash。如果,已经有Flash了,就不用添加了,如果没有的话,就一定要添加Flash,否则,无法下载程序到开发板。

编译即可
PS:main.c中的头文件需要引用。例如:#include "stm32f10x_gpio.h"、#include "stm32f10x_rcc.h"等





仿真器的接口
流行的是JTAG/SWD
仿真器端口        连接目标板        备注
  1. VCC          MCU电源VCC        VCC
  2. VCC          MCU电源VCC        VCC
  3. TRST          TRST        Test ReSeT/ pin
  4. GND          GND或悬空         
  5. TDI          TDI        Test Data In pin
  6. GND          GND或悬空         
  7. TMS, SWIO          TMS, SWIO        JTAG:Test Mode State pin ; SWD: Data I/O pin
  8. GND          GND或悬空         
  9. TCLK, SWCLK          TMS, SWCLK        JTAG: Test Clock pin ; SWD: Clock pin
  10. GND          GND或悬空         
  11. RTCK           RTCK         
  12. GND          GND或悬空         
  13. TDO          TDO        Test Data Out pin
  14. GND          GND或悬空         
  15. RESET          RESET        RSTIN pin
  16. GND          GND或悬空         
  17. NC          NC         
  18. GND          GND或悬空         
  19. NC          NC         
  20. GND          GND或悬空         


下面是标准的接口排列:




ST-Link/V2 JTA/SWD接口是如何定义的?
下面为ST-Link/V2 JTAG/SWD接口定义:
仿真器端口        连接目标板        功能
  1. TVCC          MCU电源VCC        连接STM32目标板的电源VCC

  2. TVCC          MCU电源VCC        连接STM32目标板的电源VCC
  3. TRST          GND        GROUND
  4. UART-RX          GND        GROUND
  5. TDI          TDI        连接STM32的JTAG TDI
  6. UART-TX          GND        GROUND
  7. TMS, SWIO          TMS, SWIO        连接STM32的JTAG的TMS, SWD的SW IO
  8. BOOT0          GND        GROUND
  9. TCK, SWCLK          TCK, SWCLK        连接STM32的JTAG的TCK, SWD的SW CLK
  10. SWIM          GND        GROUND
  11. NC          NC        Unused
  12. GND          GND        GROUND
  13. TDO          TDO        连接STM32的JTAG TDO
  14. SWIM-RST          GND        GROUND
  15. STM32-RESET          RESET        连接STM32目标板的RESET端口
  16. KEY          NC        GROUND
  17. NC          NC        Unused
  18. GND          GND        GROUND
  19. VDD          NC        VDD (3.3V)
  20. GND          GND        GROUND
下面是ST-Link/V2 JTAG/SWD标准的接口排列:





STM32F10X手册中要求的JTAG/SWD接法:


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表