STM32F103VET6 库函数3.5
为了描述简便,前述这部分语法不对,就是为了说明意思。
我的设想是,有这么一个数组就3个字节那么大,数据内容不为空,有数。
u8 TXXX.recvaddr【3】 = {1,2,3};
然后从EEPROm里读取了一组数据,存入了u8 certify_userlist【16*3】 = {0};这个数组里。这个数组具体存入的元素个数根据变量certify_usernums来决定。
我想在certify_userlist里查找是否有TXXX.recvaddr【】这个数组的内容,3个字节一组一组的找,如果找到直接函数返回1.否则返回0.
也就是说 比如 想在 certify_userlist[48] = {4,5,6;7,8,9;1,2,3;10,11,12}里查找是否有TXXX.recvaddr[3] = {1,2,3}的值
该段函数如下:
u8 Authentication_list()
{
u8 i,k;
I2C_Read(I2C1, ADDR_24C02N, 48, &certify_usernums, 1);
printf("Auther: %d\r\n", certify_usernums);
if((certify_usernums <= 16)&&(certify_usernums >= 0))
{
I2C_Read(I2C1, ADDR_24C02N, 0, certify_userlist, certify_usernums * 3);
}
for(k = 0; k < certify_usernums *3 ;k++)
{
printf("certify_userlist[%d]: %d\r\n", k,certify_userlist[k]);
}
for(i = 0; i < certify_usernums; i++)
{
printf(" cer: %d\r\n",i);
if(0 == memcmp(TXXX.recvaddr, certify_userlist + i*3, 3))
{
printf("OK\r\n");
memset(certify_userlist, 0, 48);
iscertify = 1;
return 1;
}
}
iscertify = 0;
memset(certify_userlist, 0, 48);
return 0;
}
我现在非常奇怪的是我这段程序,我通过看Log,基本确定它能够找到数据是否存在,而且也能执行到return;但为什么执行完,整个主程序就死机了。
大家帮我看看吧。谢谢了!!!!
|