Cortex-M3汇编实践分享(原创)

2019-07-21 06:03发布

之前发了个汇编语言编写的工程,里面代码一大堆,但是如果真的直接去啃这份代码相信还是比较麻烦的,而且帖子发过之后反应也不是很大,所以决定把写这个程序的过程也分享出来,图文并茂希望大家有用,算是我在论坛潜水这么久的回报吧。

编写过程中有参考的一些文档也一并上传,今天先奉上第一章内容(后面的还没写
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
31条回答
三两二锅头
1楼-- · 2019-07-25 09:44
georgemxx 发表于 2017-2-7 12:14
您好,我想在linux环境下开发stm32,请问启动代码和中断向量这两个汇编代码怎么写

你可以参考startup.h里面的向量表部分,把你的向量表定义好,在编译链接的时候吧对应的目标文件映射到芯片flash的起始地址(把向量表的起始地址设置为程序的入口)应该就可以了,linux下我只玩过AVR  stm32没搞过 估计套路应该一样吧
georgemxx
2楼-- · 2019-07-25 14:11
 精彩回答 2  元偷偷看……
三两二锅头
3楼-- · 2019-07-25 16:16
georgemxx 发表于 2017-2-11 17:02
我这两天弄出来了,主要是makefile,startup.s,link script,vectors.S,这些弄好后就可以像在ide中那样 ...

应该有专门的工具,以前搞AVR的时候有个叫avrdude的东西,直接把命令写到makefile里面,然后直接下载的,stm32没搞过 不太清楚,好像有个stm32flash的工具  可以用串口下载
taochangqing
4楼-- · 2019-07-25 20:48
顶一个,学习
xie112
5楼-- · 2019-07-26 00:23
谢谢分享,,,,,,,,
whsbk
6楼-- · 2019-07-26 01:49
学习的动力就是移植NES,但下面的汇编要更换自己开发板的接线方法,完全找不着北,虽然作者已经写了很注释,楼主能帮忙看看假设我要把FC的三个手柄信号线改到PA9,PA10, PA11该怎么做
joy0_W                ;4016  手柄1+选通
;----------------------------------------------------------------------------
        tst r0,#1
        orr lr,#0x01                ;lr最低位置1防止进入arm状态
        bxne lr

        ldr r0,=0x40011408 ; 端口输入数据寄存器(GPIOD_IDR)0x40011408        按键端口
        ldr r0,[r0]                 ;        PD9    11     12    13    14    15设置成的输入          按下为0
                                  ;   key 6     1      2         3           4         5

                        ;        ((右  <<7)|(左  <<6)|(下  <<5)|(上  <<4)|Start<<3)|Select<<2)|(B  <<1)| A   )
                        ;                         5                 3                                                                1                  2                        4        按键编号
       
        lsr r0,r0,#8         ;>>8  只要高8位
        rsb r0,r0,#0xff   ; R0 = #0xff-R0      反向减法?   取反                  nes需要按下为1
                                        ;                        76543210
                                        ;                        54321 6                按键编号
                                        ;                        11111010                8位数据

        and r2,r0,#0x80   ;按键5 在对应位

        and r1,r0,#0x20   ;按键3
        orr r2,r1,lsl#1         ;                        <<1

        and r1,r0,#0x8 ;按键1
        orr r2,r1                ;按键1 在对应位

        and r1,r0,#0x10 ;按键2
        orr r2,r1,lsr#2 ;        >>2

        and r1,r0,#0x40 ;按键4
        orr r2,r1,lsr#6  ;    >>6                 r2是键值
        orr r2,r2,#0x100000                  ;20位表示控制器在位

        str r2,joy0serial
;        orr lr,#0x01                ;lr最低位置1防止进入arm状态
        bx lr

一周热门 更多>