查看: 1522|回复: 0
打印 上一主题 下一主题

luminary 官方论坛上的有人给出的crc16源码,很经典

[复制链接]
跳转到指定楼层
沙发
发表于 2016-4-18 21:57:28 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
以下是luminary 上的的crc16源码,采用的编译环境是rvmdk,稍微改下可以在iar以及gcc上编译
不过stm32有硬件的crc,这个就不需要了。luminary新出的几个9b,9700以及9l和5000系列的几个新出的片子上都有crc,不过是烧在rom里面的。

    AREA    |.text|, CODE, READONLY, ALIGN=2
    THUMB

    GLOBAL    get_crc16


    PRESERVE8 {TRUE}

;|----------------------------------------------|
;|    U16 get_crc16(U16 crc, U8 ch)        |
;|                        |
;|    Pol. : x^16 + x^15 + x^2 + 1        |
;|    crc = current crc value            |
;|    ch  = new data              |
;|    return value = new crc             |
;|----------------------------------------------|
get_crc16
    eor    r1,r0
    mov    r1,r1, LSL #24
    mov    r0,r0, LSR #8
    eor    r1,r1, ROR #31
    eor    r0,r1, ROR #18
    eor    r1,r1, LSL #2
    eors    r1,r1, LSL #4
    ldrmi    r1,=0xc001
    eormi    r0,r1
    bx    lr


    END

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入因仑

本版积分规则

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