初级会员

- 积分
- 194
- 金钱
- 194
- 注册时间
- 2019-6-18
- 在线时间
- 67 小时
|
5金钱
大家好,想写一个Flash模拟EEPROM的程序,串口接收到数据后保存到单片机内部,然后在读取出来,
通过串口显示到串口助手上,但是现在问题是每次都要复位后才能重新读取成功,
否则每次读取的都是上一次发送的结果
- #define FLASH_SAVE_ADDR 0X08000000 + 15000 //设置FLASH 保存地址(必须为偶数,且其值要大于本代码所占用FLASH的大小+0X08000000)
- int main(void)
- {
- u16 t;
- u8 len = 4;
- u8 datatemp[4]; //读出来的数据存放
- u8 jieshou[4]; //接受到的数据存放
- NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);// 设置中断优先级分组2
- delay_init(); //延时函数初始化
- uart_init(9600); //串口初始化为9600
-
- while(1)
- {
- if(USART_RX_STA&0x8000)
- {
- len=USART_RX_STA&0x3fff; //得到此次接收到的数据长度
-
- for(t=0;t<len;t++) //把BUF中的数据存到jieshou数组中去
- {
- jieshou[t] = USART_RX_BUF[t];
- while((USART1->SR&0X40)==0); //等待发送结束
- }
-
- STMFLASH_Write(FLASH_SAVE_ADDR,(u16*)USART_RX_BUF,len); //写到内部
- STMFLASH_Read(FLASH_SAVE_ADDR,(u16*)datatemp,len); //从内部读出来
-
- for(t=0;t<len;t++)
- {
- printf("%x \r",datatemp[t]); //把读出来的发出来
- printf("\r\n");
- delay_ms(400);
- }
- printf("发送完一次\r\n");
- USART_RX_STA=0; //开启下一次接收
- }
- }
- }
复制代码
|
|