Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
FAL
F103ZE移植FAL库,fal_flash_stm32f2_port.c的修改方法的问题
发布于 2019-07-16 13:04:20 浏览:3251
订阅该版
采用正点原子精英板 F103ZET6 移植FAL库时,由于包里面的驱动port为F2,所以需要修改为F1系列的。 但是在移植的过程中,我首先修改为头文件为F1系列,但是随后编译过程中发现,类似FLASH_Sector_0的变量,都没有找到定义。然后自己定义了这一类的变量,然后发现,此文件的引用似乎来自于标准库函数。 所以发帖求助一下,有没有基于F1系列的FAL库的函数的移植指南,或者说有没有已经写好的BSP。 求助啊,大神们。
查看更多
5
个回答
默认排序
按发布时间排序
pkokoc
2020-04-16
这家伙很懒,什么也没写!
[i=s] 本帖最后由 pkokoc 于 2020-4-16 12:00 编辑 [/i] **问题原因**: 由于STM32F1的片内FLASH组织结构与STM32F2、F4等的片内FLASH组织结构是不同的(具体请参加芯片数据手册)。因此对片内FLASH的read,write,erase 函数的实现也是不同的。需要根据不同的片内FLASH组织结构来实现这三个函数。 因此,像楼主这样的操作,只改引用头文件,而fal_flash_stm32f2_port.c文件内容不改变,其上述三个函数还是适用于STM32F2的。 **解决办法:** 其实rt-thread已经为我们实现了STM32FX系列FAL的读写擦除函数,在下面位置可找到。 [attach]15034[/attach] 我使用STM32F103VET6实际测试,发现有两个解决办法都可行。STM32F1系列应该都是适用的。其它系列未测试,思路应该是一样的。 1、如果自己对读,写,擦除没有特殊要求,可直接使用rt-thread提供的drv_flash_f1.c 文件。此时只需直接删除fal_flash_stm32f2_port.c文件,然后在fal_cfg.h中配置片内FLASH分区表即可。 2、可以吧drv_flash_f1.c 文件中的内容复制到 fal_flash_stm32f2_port.c 文件,完全替换 fal_flash_stm32f2_port.c 文件中的内容。(顺便rename一下文件名为 fal_flash_stm32f1_port.c,看起来顺眼一些)。编译的时候会优先使用 fal_flash_stm32f1_port.c 文件。 复制内容后,需要修改 fal_flash_stm32f1_port.c 中结构体fal_flash_dev的变量名,否则会提示重复定义 原内容: [attach]15035[/attach] 修改为: [attach]15036[/attach] 修改后,相应的fal_cfg.h中设备表中的片内FLASH设备名也需修改为 stm32f1_onchip_flash 下图是正确的执行结果 [attach]15039[/attach]
水清沙白
2019-07-16
这家伙很懒,什么也没写!
你这排版简直辣眼睛
知行992
2020-02-15
这家伙很懒,什么也没写!
解决了吗?同问
断崖独坐
2020-04-14
这家伙很懒,什么也没写!
解决了吗?求教
SayHello
2023-03-27
这家伙很懒,什么也没写!
按照第一个回答,调试成功了 ![screenshot_image.png](https://oss-club.rt-thread.org/uploads/20230327/2256a0d20158217b67a030cd3e17eee7.png) 一楼基本很清楚了,我补充一些细节: 在fal_flash_stm32f2_port.c文件开头添加一个#include "drv_flash.h" 文件最后保留fal_flash_dev结构体的声明 ```c const struct fal_flash_dev stm32f1_onchip_flash =//按自己芯片改,我这里是f103vet6 { .name = "stm32_onchip", .addr = 0x08000000, .len = 512*1024,/* 1024*1024, */ .blk_size = 2*1024,/* 128*1024, */ .ops = {NULL/* init */, stm32_flash_read, stm32_flash_write, stm32_flash_erase}, .write_gran = 32/* 8 */ /* stm32f1: 32 bit */ }; ``` 在编译器里别忘了加那个rt-thread提供的drv_flash_f1.c 文件
撰写答案
登录
注册新账号
关注者
0
被浏览
3.3k
关于作者
补不补布
这家伙很懒,什么也没写!
提问
1
回答
1
被采纳
0
关注TA
发私信
相关问题
1
关于FAL移植
2
添加fal软件包之后编译出现错误,求助!
3
关于easyflash4.0的写入和读取norflash一些疑惑咨询
4
FAL驱动移植&构建脚本问题
5
帮我看一下这样分区会不会冲突??
6
EasyFlash 4.0疑似出BUG
7
疑似FAL日志输出与DFS冲突??
8
fal软件包偏移量大于等于当前分区的大小会报错
9
为什么片内Flash总是写失败?
10
片上flash的文件系统的建立
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
GD32F450 片内 flash驱动适配
2
STM32H7R7运行CherryUSB
3
RT-Smart首次线下培训,锁定2024 RT-Thread开发者大会!
4
使用RC522软件包驱动FM1722
5
常量数据类型和表达式陷阱分享
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
UART
WIZnet_W5500
ota在线升级
freemodbus
PWM
flash
cubemx
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
flashDB
GD32
socket
中断
编译报错
Debug
SFUD
rt_mq_消息队列_msg_queue
msh
keil_MDK
ulog
C++_cpp
MicroPython
本月问答贡献
a1012112796
10
个答案
1
次被采纳
踩姑娘的小蘑菇
4
个答案
1
次被采纳
红枫
4
个答案
1
次被采纳
张世争
4
个答案
1
次被采纳
Ryan_CW
4
个答案
1
次被采纳
本月文章贡献
catcatbing
3
篇文章
5
次点赞
YZRD
2
篇文章
5
次点赞
qq1078249029
2
篇文章
2
次点赞
xnosky
2
篇文章
1
次点赞
Woshizhapuren
1
篇文章
5
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部