打印
[STM32F0]

无聊写个64位除以32位的函数,适合M0没有除法指令

[复制链接]
2750|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 yjmwxwx 于 2017-9-5 08:23 编辑

家里蹲没工作闲着无聊胡乱写
单片机STM32F030F4P6

R0高32位 0xfedcba98
R1低32位 0x76543210
除以R2      0x33333333
等于           
R0高32位 0x00000004
R1低32位 0xfa4fa4ff
R2余数       0x0eca8643

_chufa64:                @64位除以32位软件除法
        [url=home.php?mod=space&uid=72445]@[/url] r0-r1除以r2等于R0-R1余数R2
        push {r4-r7}
        mov r3, r0
        mov r6, r1
        movs r4, # 1
        mov r7, r4
        lsls r4, r4, # 31
        movs r0, # 0
        mov r5, r0
_chufaxunhuan64:
        lsls r3, r3, # 1
        adcs r5, r5, r5
        cmp r5, r2
        bcc _chufaweishubudao64
        adds r0, r0, r4
        subs r5, r5, r2
_chufaweishubudao64:
        lsrs r4, r4, # 1
        bne _chufaxunhuan64
        push {r0}
        lsls r7, r7, # 31
        bpl _chufafanhui64
        mov r4, r7
        mov r3, r6
        movs r0, # 0
        b _chufaxunhuan64
_chufafanhui64:
        mov r1, r0
        mov r2, r5
        pop {r0}
        pop {r0}
        pop {r4-r7}
        bx lr

_chufa:                @软件除法
        @ r0 除以 r1 等于 商(r0)余数(r1)
        push {r4}
        mov r2, r0
        movs r3, # 1
        lsls r3, r3, # 31
        movs r0, # 0
        mov r4, r0
_chufaxunhuan:
        lsls r2, r2, # 1
        adcs r4, r4, r4
        cmp r4, r1
        bcc _chufaweishubudao0
        adds r0, r0, r3
        subs r4, r4, r1
_chufaweishubudao0:
        lsrs r3, r3, # 1
        bne _chufaxunhuan
        mov r1, r4
        pop {r4}
        bx lr





chufa.zip (74.29 KB)

沙发
aozima| | 2017-9-5 08:55 | 只看该作者
楼主这Jlink命令行用得溜啊

使用特权

评论回复
板凳
yjmwxwx|  楼主 | 2017-9-5 09:03 | 只看该作者
aozima 发表于 2017-9-5 08:55
楼主这Jlink命令行用得溜啊

都用这个调试,人家这个工具做的实在是好用。

使用特权

评论回复
地板
feelhyq| | 2017-9-5 09:25 | 只看该作者

使用特权

评论回复
5
mmuuss586| | 2017-9-5 10:14 | 只看该作者
厉害

使用特权

评论回复
6
ac62| | 2017-9-5 15:51 | 只看该作者
这个厉害了

使用特权

评论回复
7
ahfl| | 2018-5-12 17:44 | 只看该作者
您好,我是程序小白。最近正在用STM32F031写代码。苦于没有除法器到处找资料,看到您用汇编写的除法函数。完全不知如何用到MDK上,能否帮忙指点下 多谢

使用特权

评论回复
8
yjmwxwx|  楼主 | 2018-5-12 17:54 | 只看该作者
ahfl 发表于 2018-5-12 17:44
您好,我是程序小白。最近正在用STM32F031写代码。苦于没有除法器到处找资料,看到您用汇编写的除法函数。 ...

我这个32位的是权威指南里面的,64的是自己写的,我没用过MDK写STM32的程序,应该内联汇编或者单独建个.s文件就可以吧。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

117

主题

2704

帖子

47

粉丝