完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
小弟从网上找的例程是F103的 我用的是F107VCT6,看了半天代码,自己又找了一个103做实验,103调通了,可是107失败了,程序没变,请问还有哪些地方需要更改一下,下面附上flash.c,二楼放MAIN.c
//从指定地址开始读取多个数据 void FLASH_ReadMoreData(uint32_t startAddress,uint16_t *readData,uint16_t countToRead) { uint16_t dataIndex; for(dataIndex=0;dataIndex=(FLASH_BASE+1024*FLASH_SIZE))) { return;//非法地址 } FLASH_Unlock(); //解锁写保护 uint32_t offsetAddress=startAddress-FLASH_BASE; //计算去掉0X08000000后的实际偏移地址 uint32_t sectorPosition=offsetAddress/SECTOR_SIZE; //计算扇区地址,对于STM32F103VET6为0~255 uint32_t sectorStartAddress=sectorPosition*SECTOR_SIZE+FLASH_BASE; //对应扇区的首地址 FLASH_ErasePage(sectorStartAddress);//擦除这个扇区 uint16_t dataIndex; for(dataIndex=0;dataIndex |
|
相关推荐
1个回答
|
|
在将STM32F103的例程移植到STM32F107上时,可能需要根据不同芯片的Flash大小和地址进行一些更改。在你提供的代码中,有一个地方需要更改:
1. 在函数`FLASH_ReadMoreData`中,判断读取地址是否超出了Flash的范围时,你使用了`FLASH_BASE+1024*FLASH_SIZE`作为Flash的末地址。但是,STM32F107的Flash大小为256KB,所以正确的Flash末地址应为`FLASH_BASE+256*1024`。因此,你需要将下面这行代码进行更改: ```c #define FLASH_SIZE 256 // Flash的大小为256KB ``` 另外,在移植过程中,还需要确保正确配置相关的Flash参数,如Flash起始地址、大小、扇区大小等,以便正确操作和读取Flash。 此外,还要确保对应的Flash操作函数和中断向量表正确设置。具体可以参考ST官方提供的STM32F107参考手册和相关文档,对比不同芯片的差异,进行相应的修改和调试。 |
|
|
|
只有小组成员才能发言,加入小组>>
调试STM32H750的FMC总线读写PSRAM遇到的问题求解?
1658 浏览 1 评论
X-NUCLEO-IHM08M1板文档中输出电流为15Arms,15Arms是怎么得出来的呢?
1571 浏览 1 评论
998 浏览 2 评论
STM32F030F4 HSI时钟温度测试过不去是怎么回事?
695 浏览 2 评论
ST25R3916能否对ISO15693的标签芯片进行分区域写密码?
1617 浏览 2 评论
1877浏览 9评论
STM32仿真器是选择ST-LINK还是选择J-LINK?各有什么优势啊?
663浏览 4评论
STM32F0_TIM2输出pwm2后OLED变暗或者系统重启是怎么回事?
529浏览 3评论
547浏览 3评论
stm32cubemx生成mdk-arm v4项目文件无法打开是什么原因导致的?
517浏览 3评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-29 11:27 , Processed in 0.792514 second(s), Total 80, Slave 63 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号