[其他ST产品] 搭建并配置Keil嵌入式开发环境,完成一个基于STM32汇编程序的编写。

[复制链接]
 楼主| o88ne 发表于 2023-10-27 14:06 | 显示全部楼层 |阅读模式
keil安装

下载mdk和注册器,点击安装mdk,根据提示自行更改软件路径和支持包路径,填写完注册信息后NEXT,等待安装。安装完成,点击Finish。

注册

1.点击运行注册器程序。

2.在桌面找到keil软件图标,点击右键,以管理员身份运行。

3.点击File–>Lincense Management–>Single-User Lincense,找到CID,复制CID中的内容填写到注册器的CID空白处,将注册器中Target选择为ARM,点击Generate,得到注册码。

4.将生成的注册码复制粘贴到Keil的New Lincense ID Code空白处,点击Add LIC,点击Close。


 楼主| o88ne 发表于 2023-10-27 14:06 | 显示全部楼层
支持包安装

点击运行下载的支持包,NEXT开始安装,安装完成,点击Finish。

二.stm32程序
1.新建工程
双击打开keil,点击菜单栏Project–>New μVision Project,新建项目,在弹窗中设置工程项目的名称和路径,在这里,我新建名为TEST的工程文件。

2.配置环境
选择设备

点击菜单中的Project,找到Options for Target ‘Target 1’并点击,在弹窗中选择相应的目标环境,此处我选的是STM32F103ZE

13444653b53606a87f.png
 楼主| o88ne 发表于 2023-10-27 14:06 | 显示全部楼层
选择运行环境
QQ截图20231027140721.jpg
 楼主| o88ne 发表于 2023-10-27 14:08 | 显示全部楼层
 楼主| o88ne 发表于 2023-10-27 14:40 | 显示全部楼层
添加源文件

右键单击Source Group 1,选择Add New Item to Group,添加Asm File (.s)文件,命名为TEST并保存。

为其添加如下代码
  1. AREA MYDATA, DATA
  2.        
  3. AREA MYCODE, CODE
  4.         ENTRY
  5.         EXPORT __main

  6. __main
  7.         MOV R0, #10
  8.         MOV R1, #11
  9.         MOV R2, #12
  10.         MOV R3, #13
  11.         ;LDR R0, =func01

  12.         BL        func01
  13.         ;LDR R1, =func02
  14.         BL        func02
  15.        
  16.         BL         func03
  17.         LDR LR, =func01
  18.         LDR PC, =func03
  19.         B .
  20.                
  21. func01
  22.         MOV R5, #05
  23.         BX LR
  24.        
  25. func02
  26.         MOV R6, #06
  27.         BX LR
  28.        
  29. func03
  30.         MOV R7, #07
  31.         MOV R8, #08       
  32.         BX LR

 楼主| o88ne 发表于 2023-10-27 14:41 | 显示全部楼层
设置仿真器模式

点击菜单中的Project,找到Options for Target ‘Target 1’并点击,选择Debug–>Use Simulator,将Dialog DLL以及Parameter处修改为自己选择的设备,OK。 86428653b5b83f2c5c.png
 楼主| o88ne 发表于 2023-10-27 14:41 | 显示全部楼层
3.编译调试
57371653b5b95c48e2.png
 楼主| o88ne 发表于 2023-10-27 14:42 | 显示全部楼层
 楼主| o88ne 发表于 2023-10-27 14:43 | 显示全部楼层
可以看见寄存器R5,R6,R7,R8的值和程序设置一样
 楼主| o88ne 发表于 2023-10-27 14:43 | 显示全部楼层
三.分析HEX文件

  1. :020000040800F2
  2. :100000000006002031010008390100083B0100080A
  3. :100010003D0100083F010008410100080000000008
  4. :100020000000000000000000000000004301000884
  5. :1000300045010008000000004701000849010008D0
  6. :100040004B0100084B0100084B0100084B01000860
  7. :100050004B0100084B0100084B0100084B01000850
  8. :100060004B0100084B0100084B0100084B01000840
  9. :100070004B0100084B0100084B0100084B01000830
  10. :100080004B0100084B0100084B0100084B01000820
  11. :100090004B0100084B0100084B0100084B01000810
  12. :1000A0004B0100084B0100084B0100084B01000800
  13. :1000B0004B0100084B0100084B0100084B010008F0
  14. :1000C0004B0100084B0100084B0100084B010008E0
  15. :1000D0004B0100084B0100084B0100084B010008D0
  16. :1000E0004B0100084B0100084B0100084B010008C0
  17. :1000F0004B0100084B0100084B0100084B010008B0
  18. :100100004B0100084B0100084B0100084B0100089F
  19. :100110004B0100084B0100084B0100084B0100088F
  20. :100120004B0100084B0100084B0100084B0100087F
  21. :100130000948804709480047FEE7FEE7FEE7FEE77B
  22. :10014000FEE7FEE7FEE7FEE7FEE7FEE704480549B7
  23. :10015000054A064B7047000041020008990200085A
  24. :100160000000002000060020000200200002002005
  25. :10017000704770477047000080B500F001F880BDFF
  26. :1001800082B041F204000021C4F20200019100910A
  27. :1001900050F8041C41F4803140F8041C50F8041C51
  28. :1001A00001F400310091019901310191009919B9CF
  29. :1001B0000199B1F5A06FF1D150F8041C890354BF27
  30. :1001C0000021012100910099012936D142F200015C
  31. :1001D000C4F202010A6842F010020A600A6822F0C2
  32. :1001E00003020A600A6842F002020A6001680160C4
  33. :1001F00001680160016841F480610160016821F4D7
  34. :100200007C110160016841F4E811016050F8041CA0
  35. :1002100041F0807140F8041C50F8041C8901FBD5A2
  36. :10022000016821F003010160016841F002010160F1
  37. :10023000016801F00C010829FAD102B070470000F2
  38. :1002400080B541F20000C4F202000168002241F0D2
  39. :10025000010101604168CFF6FF0211404160016871
  40. :100260004FF6FF72CFF6F66211400160016821F48B
  41. :1002700080210160416821F4FE0141604FF41F01BB
  42. :100280008160FFF779FF4EF60850CEF200004FF084
  43. :100290000061016080BD00004FF00A004FF00B01CB
  44. :1002A0004FF00C024FF00D0300F009F800F00AF8CF
  45. :1002B00000F00BF8DFF81CE0DFF81CF0FEE74FF071
  46. :1002C000050570474FF0060670474FF007074FF0DF
  47. :0C02D00008087047BF020008CB020008BD
  48. :040000050800029954
  49. :00000001FF
 楼主| o88ne 发表于 2023-10-27 14:43 | 显示全部楼层
该文件为16进制的一串字符。hex文件的第一排字符称之为扩展线性地址记录,也称为32位地址记录或HEX386记录。
在第一行数据020000040800F2中,其实际表达为0x02 0x00 0x00 0x04 0x08 0x00 0xf2。具体含义为

1.第一个字节 0x02表示本行数据的长度;

2.第二、三字节 0x00 0x00表示本行数据的起始地址;

3.第四字节 0x04表示数据类型,数据类型有:0x00、0x01、0x02、0x03、0x04、0x05

   '00' Data Rrecord:用来记录数据,HEX文件的大部分记录都是数据记录
   '01' End of File Record: 用来标识文件结束,放在文件的最后,标识HEX文件的结尾

   '02' Extended Segment Address Record: 用来标识扩展段地址的记录

   '03' Start Segment Address Record:开始段地址记录

   '04' Extended Linear Address Record: 用来标识扩展线性地址的记录

   '05' Start Linear Address Record:开始线性地址记录

4.然后是数据,0x08 0x00

5.最后一个字节 0xf2为校验和。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

62

主题

426

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部