STMFLASH_Read(FLASH_SAVE_ADDR,(u16*)datatemp,SIZE); for(z=0;z<=5;z++){ TEXT_Buffer[z]=datatemp[z]; } HMIpassword(); while(1) //Ö÷ÒªÔËÐÐFlashµÄдºÍ¶Á { if(USART_RX_STA&0x8000) { len=USART_RX_STA&0x3fff;//µÃµ½´Ë´Î½ÓÊÕµ½µÄÊý¾Ý³¤¶È StringToHex(USART_RX_BUF,USART_RX_BUF_HEx); if(USART_RX_BUF_HEx[0]==0x41&&USART_RX_BUF_HEx[7]==0x61) { for(z=0;z<=5;z++) { TEXT_Buffer[z]=USART_RX_BUF_HEx[z+1]; } STMFLASH_Write(FLASH_SAVE_ADDR,(u16*)TEXT_Buffer,SIZE); HMIpassword(); printf("FLASH Write Finished!");//Ìáʾ´«ËÍÍê³É for(z=0;z<=50;z++) { USART_RX_BUF_HEx[z]=0x30; USART_RX_BUF[z]=0; } } USART_RX_STA=0; }else { LED0=!LED0; delay_ms(100); } } }
时间: 2024-04-18 14:34:00 浏览: 178
这段代码的功能是读取存储在Flash中的数据,并将其复制到TEXT_Buffer数组中。然后,它将调用名为HMIpassword的函数。之后,程序进入一个无限循环,等待接收数据。如果接收到的数据满足特定条件(例如,第一个和第八个字节分别为0x41和0x61),则将接收到的数据的一部分复制到TEXT_Buffer数组中,并将更新后的TEXT_Buffer数组写入Flash中。然后,再次调用HMIpassword函数,并通过printf函数打印一条消息。最后,将USART_RX_BUF_HEx和USART_RX_BUF两个数组中的元素初始化为0,并将USART_RX_STA变量重置为0。如果没有接收到数据,则会循环闪烁LED灯,每次延迟100毫秒。
相关问题
size=sizeof(String1); //开始存储 for(j=0;j<6;j++) TEXT_Buffer[j]=String1[count1][j]; STMFLASH_Write(FLASH_SAVE_ADDR+(2*count1*SIZE),(u16*)TEXT_Buffer,SIZE);
这段代码是将`String1`数组中的字符串存储到闪存中的函数代码片段。首先,通过`sizeof(String1)`获取`String1`数组的大小,并将结果赋值给变量`size`。然后,使用循环将`String1`数组中指定索引`count1`对应的字符串的前6个字符赋值给`TEXT_Buffer`数组。最后,调用`STMFLASH_Write`函数将`TEXT_Buffer`数组中的数据写入到闪存的指定地址中。其中,`FLASH_SAVE_ADDR+(2*count1*SIZE)`表示闪存中的存储地址,`(u16*)TEXT_Buffer`表示要写入的数据指针,`SIZE`表示要写入的数据大小。
阅读全文