河北水利局项目
This commit is contained in:
135
APP/addr.c
Normal file
135
APP/addr.c
Normal file
@@ -0,0 +1,135 @@
|
||||
#include "addr.h"
|
||||
#include "Mem.h"
|
||||
#include "General.h"
|
||||
#include "Flash.h"
|
||||
|
||||
extern void addr_set(u8 * addr);
|
||||
|
||||
static u8 broadcast_addr[6] = {0xAA, 0xAA, 0xAA, 0xAA, 0xAA, 0xAA};
|
||||
static u8 broadcast_addr_1[6] = {0x99, 0x99, 0x99, 0x99, 0x99, 0x99};
|
||||
|
||||
static u8 local_addr[6] = {0x11, 0x11, 0x11, 0x11, 0x11, 0x11};
|
||||
|
||||
u8 cmp_addr(u8 *addr)
|
||||
{
|
||||
if (cmp_datas(addr, local_addr, 6))
|
||||
{
|
||||
return ADDR_EQ;
|
||||
}
|
||||
else if (cmp_datas(addr, broadcast_addr, 6))
|
||||
{
|
||||
return BRODCAST_ADDRAA_EQ;
|
||||
}
|
||||
else if (cmp_datas(addr, broadcast_addr_1, 6))
|
||||
{
|
||||
return BRODCAST_ADDR99_EQ;
|
||||
}
|
||||
else
|
||||
{
|
||||
return ADDR_NEQ;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
u8 * read_broadcast_addr(void)
|
||||
{
|
||||
return broadcast_addr;
|
||||
}
|
||||
|
||||
|
||||
/*****************************************************************************
|
||||
Prototype : set_addr
|
||||
Description : none
|
||||
Input : void
|
||||
Output : None
|
||||
Return Value :
|
||||
Date : 2014/3/15
|
||||
Author : Barry
|
||||
*****************************************************************************/
|
||||
void set_addr(u8 *newaddr)
|
||||
{
|
||||
u8 local_temp[8];
|
||||
u16 crc;
|
||||
|
||||
//ÊäÈëÊÇÕýÐò£¬´æ´¢·´Ðò
|
||||
//memcpy(local_addr, newaddr, 6);
|
||||
//memcpy(local_temp, newaddr, 6);
|
||||
|
||||
memset(local_temp,0,sizeof(local_temp));
|
||||
memset(local_addr,0,sizeof(local_addr));
|
||||
|
||||
|
||||
for (u8 i = 0; i < 6; i++)
|
||||
{
|
||||
local_addr[i] = newaddr[5 - i];
|
||||
local_temp[i] = newaddr[5 - i];
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
// memmove(local_addr,&newaddr[1],5);
|
||||
// memmove(local_temp,&newaddr[1],5);
|
||||
// addr_set(&newaddr[1]);
|
||||
|
||||
crc = GetCRC16(local_addr, 6);
|
||||
|
||||
local_temp[6] = crc & 0xFF;
|
||||
local_temp[7] = (u8)((crc >> 8) & 0xFF);
|
||||
|
||||
if (STM32_FlashPageErase(FLASH_LOCAL_ADDR_ADDRESS) == FLH_SUCCESS)
|
||||
{
|
||||
STM32_FlashWrite( FLASH_LOCAL_ADDR_ADDRESS, local_temp, 8);
|
||||
}
|
||||
}
|
||||
|
||||
/*****************************************************************************
|
||||
Prototype : read_addr
|
||||
Description : none
|
||||
Input : void
|
||||
Output : None
|
||||
Return Value :
|
||||
Date : 2014/3/15
|
||||
Author : Barry
|
||||
*****************************************************************************/
|
||||
bool read_addr(u8 *addrbuf )
|
||||
{
|
||||
u8 tempaddr[8];
|
||||
u16 crc;
|
||||
|
||||
memcpy(&tempaddr, (u8*)FLASH_LOCAL_ADDR_ADDRESS, sizeof(tempaddr));
|
||||
|
||||
crc = GetCRC16(tempaddr, 6);
|
||||
|
||||
if (crc == (tempaddr[6] + tempaddr[7]*256) )
|
||||
{
|
||||
memcpy(addrbuf, tempaddr, 6);
|
||||
return TRUE;
|
||||
}
|
||||
else
|
||||
{
|
||||
memcpy(addrbuf, local_addr, 6);
|
||||
return FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
void init_local_addr(void)
|
||||
{
|
||||
u8 temp[6];
|
||||
if (read_addr(temp) )
|
||||
{
|
||||
memcpy(local_addr,temp, 6);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
u8 * addr_get()
|
||||
{
|
||||
return local_addr;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user