OpenEdv-开源电子网

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

关于F407的FLASH问题

[复制链接]

10

主题

33

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
244
金钱
244
注册时间
2018-8-2
在线时间
73 小时
发表于 2018-9-21 16:28:24 | 显示全部楼层 |阅读模式
u8 Write_Sector( u32 start_address, u32 data_length, u32 *buff )
{
   u32 end_address,i,j;

   i=start_address;
   j=start_address;         
   end_address=start_address+data_length*4;
         if( start_address%4 || start_address<Start_Sectoraddress || start_address>End_Sectoraddress || end_address>End_Sectoraddress  )
   {
      printf("the enter address is incorrect \n");
      return 0;
   }

    unlock();
    FLASH->ACR |=~(1<<10);
/**************************************************************************************/
          for(j=start_address; j<=end_address;)
   {
          if( (*(vu32*)j) != 0XFFFFFFFF )//这里是扇区里面的内容是否为0XFFFFFFFF
          {
             Sector_Erase( GetTheSector( j ) );  
             printf("\n");
          }
          else j+=4;
         
   }

主要是在擦除扇区的时候加入printf 这个输出函数 我在循环读扇区里面的东西就可以显示多次,不然我循环读扇区里面的内容就只能显示一次不知道问题出在哪里
/***************************************************************/



                FLASH->CR |= 1<<0; //PG位激活Flash编程
                FLASH->CR &= ~(3<<8);               
                FLASH->CR |= 2<<8; //32位编程并行位数
               
        while( i<=end_address ) // 开始往扇区上面写数据
    {
                while( FLASH->SR & (1<<16) ){} //检查FLASH_SR中的BSY位,确保当前未执行任何FLASH操作
                *( vu32 * )i=*buff;  // 将i强制转化为指针变量   i是指针  *i 是取值
                buff++;
                i+=4;

        }               
               

        FLASH->CR &=~(1<<0);       
        lock();
    FLASH->ACR|=1<<10;                //FLASH擦除结束,开启数据fetch
        return 1;       

               
}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

58

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
295
金钱
295
注册时间
2018-2-27
在线时间
36 小时
发表于 2018-9-21 18:01:57 | 显示全部楼层
擦除扇区需要时间的,而调用printf争取了时间,试着用【while( FLASH->SR & (1<<16) ){} //检查FLASH_SR中的BSY位,确保当前未执行任何FLASH操作】这句替换一下printf看看有没有效果
回复 支持 反对

使用道具 举报

10

主题

33

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
244
金钱
244
注册时间
2018-8-2
在线时间
73 小时
 楼主| 发表于 2018-9-21 18:50:51 | 显示全部楼层
好像不管用,我在擦除扇区这个函数已经调用了两次检BSY位
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-8 04:42

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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