救助:想要实现功能,串口输入写到24c02再从24c02读出写到w25q128,最后从w25q128读出到串口并输出,过程中数据会丢失,附图和..

2019-07-20 02:43发布

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "spi.h"
#include "w25qxx.h"
#include "24cxx.h"

int main(void)
{
        u8 t;
        u8 m;
        u8 len ;       
        u8 TEXT_Buffer[USART_REC_LEN];
        u8 datatemp1[USART_REC_LEN];

        u8 datatemp2[USART_REC_LEN];
        u32 FLASH_SIZE;       
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//
        delay_init(168);    //
        uart_init(115200);        //
       
        LED_Init();                                        //
        AT24CXX_Init();                        //
        W25QXX_Init();                //
       
               
        while(AT24CXX_Check())//
        {
                LED0=!LED0;//
        }
        while(W25QXX_ReadID()!=W25Q128)                        //
        {
                LED1=!LED1;                //
        }       
        while(1)
        {
                        if(USART_RX_STA&0x8000)
                        {
                                len=USART_RX_STA&0x3fff;//
                        printf(" 您发送的消息网为: ");
                                for(m=0;m<len;m++)
                                        {
                                        TEXT_Buffer[m] = USART_RX_BUF[m] ; //将串口数据写到TEXT_Buffe(个人认为是这一步有问题)
                                        }
                                        AT24CXX_Write(0,(u8*)TEXT_Buffer,len);//
                                        AT24CXX_Read(0,datatemp1,len);//
                                        FLASH_SIZE=16*1024*1024;                                                                                                                //
                                        W25QXX_Write((u8*)datatemp1,FLASH_SIZE-100,len);          //
                                        W25QXX_Read(datatemp2,FLASH_SIZE-100,len);                                        //
                                for(t=0;t<len;t++)
                                        {
                                                USART_SendData(USART1,datatemp2[t]);                                 //
                                                while(USART_GetFlagStatus(USART1,USART_FLAG_TC)!=SET);//
                                        }       
                        printf(" ");//
                        USART_RX_STA=0;
                        }
                }
        }       

发送文字会出现乱码 发送数字会丢失首位。直接用串口通信没问题,工程中加入IIc和SPI通信就会出错  个人认为是数据类型不匹配 但是不会改 求帮忙。


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。