|
以下是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 |
|
|