user_RFID.c
1.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
/*
*********************************************************************************************************
*
* 模块名称 : RFID读写头处理模块
* 文件名称 : user_RFID.c
* 版 本 : V2.0
* 说 明 : 实现printf和scanf函数重定向到串口1,即支持printf信息到USART1
*
* 修改记录 :
* 版本号 日期 作者 说明
*
* Copyright (C), 2016-2017, 湖南驰众机器人 www.cizon.com.cn
*
*********************************************************************************************************
*/
#include "bsp.h"
unsigned long GetBitFromByte(unsigned char bit_len,unsigned char byte_buf[],unsigned short *byte_offset,unsigned short *bit_offset)
{
unsigned short byteOffset,bitOffset;
unsigned long data,tempdata;
byteOffset = *byte_offset;
bitOffset = *bit_offset;
data = 0;
if((bit_len > 32) || (bitOffset == 0) || (bitOffset > 8))
return 0;
while(bit_len > 0)
{
if(bit_len <= bitOffset)
{
tempdata = (byte_buf[byteOffset] >> (bitOffset - bit_len));
tempdata &= ((0x01 << bit_len) - 1);
bitOffset -= bit_len;
data += tempdata;
bit_len = 0;
}
else
{
tempdata = byte_buf[byteOffset] & ((0x01 << bitOffset) - 1);
tempdata <<= (bit_len - bitOffset);
bit_len -= bitOffset;
byteOffset++;
bitOffset = 8;
data += tempdata;
}
}
if(bitOffset == 0)
{
byteOffset++;
bitOffset = 8;
}
*byte_offset = byteOffset;
*bit_offset = bitOffset;
return data;
}