OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4132|回复: 3

请教各位大虾一个很菜的问题

[复制链接]

5

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
114
金钱
114
注册时间
2014-7-2
在线时间
17 小时
发表于 2014-8-29 18:07:00 | 显示全部楼层 |阅读模式
5金钱

//////////////////////////////////////////////////////////////////////////////////////////////////////
#define STM32_FLASH_SIZE         256                                  


//////////////////////////////////////////////////////////////////////////////////////////////////////
#define STM32_FLASH_BASE  0x08000000         
#if STM32_FLASH_SIZE<255
#define STM_SECTOR_SIZE         1024                                 
#else 
#define STM_SECTOR_SIZE                2048
#endif

#define EEPROM_PAGE_ADDR          STM32_FLASH_BASE + (STM32_FLASH_SIZE*1024) - STM_SECTOR_SIZE //页地址
#define EEPROM_STRART_ADDR  EEPROM_PAGE_ADDR + 4 //EEPROM起始地址









void STMFLASH_Write(u16 WriteAddr,u16 *pBuffer,u16 NumToWrite)    
{


          uint8_t  i,erase = 0;
          uint32_t EEPROM_ADDR = EEPROM_STRART_ADDR + WriteAddr;//写入的起始地址
          uint32_t EEPROM_ADDRS= EEPROM_ADDR + 2*NumToWrite;         //结束地址


             if((EEPROM_ADDR>=EEPROM_STRART_ADDR)&&(EEPROM_ADDRS<(STM32_FLASH_BASE+1024*STM32_FLASH_SIZE)))//检查越界
                {
                        FLASH_Unlock();                                        
                        
                        { 
                                        
                                
                                  STMFLASH_Read(0,STMFLASH_BUF);        
                                
                                
                                        for(i=0;i<NumToWrite;i++)//D£?éêy?Y
                                        {
                                                        
                                                if(STMFLASH_BUF[WriteAddr+4+i]!=0xFFFF)//Dèòa2á3y
                                                                 erase=1;
                                                           break;   
                                        }
                                        if(erase
                                        {
                                        
                                                while(!(FLASH_ErasePage(EEPROM_PAGE_ADDR) == FLASH_COMPLETE));//擦除扇区
                                                
                                                
                                                
                                                STMFLASH_Read(0,STMFLASH_BUF);
                                                while(1){for(i=0;i<1024;i++){uart1_SendDatas(STMFLASH_BUF);}}
                                                这里串口返回的数据是FF FF FF FF 00 00  00 00....
                                                 for(i=WriteAddr+4;i<NumToWrite+4;i++)//?′??
                                                        {
                                                                        STMFLASH_BUF[WriteAddr+4+i]=pBuffer;     
                                                        }
                                                        

                                                        STMFLASH_Write_NoCheck(EEPROM_STRART_ADDR,STMFLASH_BUF+4,(STM_SECTOR_SIZE/2)-4)
                                                }
                                                else 
                                                        
                                                 STMFLASH_Write_NoCheck(EEPROM_ADDR,pBuffer,NumToWrite);
}                

最佳答案

查看完整内容[请看2#楼]

 if(erase这里少了一个括号————发帖粗心,语法没问题的
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

5

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
114
金钱
114
注册时间
2014-7-2
在线时间
17 小时
 楼主| 发表于 2014-8-29 18:07:01 | 显示全部楼层
 if(erase这里少了一个括号————发帖粗心,语法没问题的
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-29 23:04:35 | 显示全部楼层
楼主这是打广告吧....
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

5

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
114
金钱
114
注册时间
2014-7-2
在线时间
17 小时
 楼主| 发表于 2014-8-30 08:41:07 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
版主:我这是真心请教,都搞了好几天了,串口返回的就是8个字节的ff,后面全是00,不知问题出在哪里?望赐教!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-7-2 03:53

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表