Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
BaiXuePrincess
rt-thread
提交
08bc2b3f
R
rt-thread
项目概览
BaiXuePrincess
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
08bc2b3f
编写于
12月 20, 2018
作者:
S
SummerGift
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
[bsp][stm32] fix flash bug
上级
938bbb03
变更
2
隐藏空白更改
内联
并排
Showing
2 changed file
with
14 addition
and
4 deletion
+14
-4
bsp/stm32/libraries/HAL_Drivers/drv_flash/drv_flash_f4.c
bsp/stm32/libraries/HAL_Drivers/drv_flash/drv_flash_f4.c
+13
-3
bsp/stm32/libraries/HAL_Drivers/drv_flash/drv_flash_l4.c
bsp/stm32/libraries/HAL_Drivers/drv_flash/drv_flash_l4.c
+1
-1
未找到文件。
bsp/stm32/libraries/HAL_Drivers/drv_flash/drv_flash_f4.c
浏览文件 @
08bc2b3f
...
...
@@ -91,22 +91,30 @@ static rt_uint32_t GetSector(rt_uint32_t Address)
{
sector
=
FLASH_SECTOR_7
;
}
#if defined(FLASH_SECTOR_8)
else
if
((
Address
<
ADDR_FLASH_SECTOR_9
)
&&
(
Address
>=
ADDR_FLASH_SECTOR_8
))
{
sector
=
FLASH_SECTOR_8
;
}
#endif
#if defined(FLASH_SECTOR_9)
else
if
((
Address
<
ADDR_FLASH_SECTOR_10
)
&&
(
Address
>=
ADDR_FLASH_SECTOR_9
))
{
sector
=
FLASH_SECTOR_9
;
}
#endif
#if defined(FLASH_SECTOR_10)
else
if
((
Address
<
ADDR_FLASH_SECTOR_11
)
&&
(
Address
>=
ADDR_FLASH_SECTOR_10
))
{
sector
=
FLASH_SECTOR_10
;
}
#endif
#if defined(FLASH_SECTOR_11)
else
if
((
Address
<
ADDR_FLASH_SECTOR_12
)
&&
(
Address
>=
ADDR_FLASH_SECTOR_11
))
{
sector
=
FLASH_SECTOR_11
;
}
#endif
#if defined(STM32F427xx) || defined(STM32F437xx) || defined(STM32F429xx)|| defined(STM32F439xx) || defined(STM32F469xx) || defined(STM32F479xx)
else
if
((
Address
<
ADDR_FLASH_SECTOR_13
)
&&
(
Address
>=
ADDR_FLASH_SECTOR_12
))
{
...
...
@@ -219,7 +227,7 @@ int stm32_flash_write(long offset, const rt_uint8_t *buf, size_t size)
HAL_FLASH_Unlock
();
__HAL_FLASH_CLEAR_FLAG
(
FLASH_FLAG_EOP
|
FLASH_FLAG_OPERR
|
FLASH_FLAG_WRPERR
|
FLASH_FLAG_PGAERR
|
FLASH_FLAG_PGSERR
);
__HAL_FLASH_CLEAR_FLAG
(
FLASH_FLAG_EOP
|
FLASH_FLAG_OPERR
|
FLASH_FLAG_WRPERR
|
FLASH_FLAG_PGAERR
|
FLASH_FLAG_PG
PERR
|
FLASH_FLAG_PG
SERR
);
for
(
size_t
i
=
0
;
i
<
size
;
i
++
,
addr
++
,
buf
++
)
{
...
...
@@ -278,17 +286,19 @@ int stm32_flash_erase(long offset, size_t size)
/* Unlock the Flash to enable the flash control register access */
HAL_FLASH_Unlock
();
__HAL_FLASH_CLEAR_FLAG
(
FLASH_FLAG_EOP
|
FLASH_FLAG_OPERR
|
FLASH_FLAG_WRPERR
|
FLASH_FLAG_PGAERR
|
FLASH_FLAG_PGPERR
|
FLASH_FLAG_PGSERR
);
/* Get the 1st sector to erase */
FirstSector
=
GetSector
(
addr
);
/* Get the number of sector to erase from 1st sector*/
NbOfSectors
=
GetSector
(
addr
+
size
)
-
FirstSector
+
1
;
NbOfSectors
=
GetSector
(
addr
+
size
-
1
)
-
FirstSector
+
1
;
/* Fill EraseInit structure*/
EraseInitStruct
.
TypeErase
=
FLASH_TYPEERASE_SECTORS
;
EraseInitStruct
.
VoltageRange
=
FLASH_VOLTAGE_RANGE_3
;
EraseInitStruct
.
Sector
=
FirstSector
;
EraseInitStruct
.
NbSectors
=
NbOfSectors
;
if
(
HAL_FLASHEx_Erase
(
&
EraseInitStruct
,
&
SECTORError
)
!=
HAL_OK
)
if
(
HAL_FLASHEx_Erase
(
&
EraseInitStruct
,
(
uint32_t
*
)
&
SECTORError
)
!=
HAL_OK
)
{
result
=
-
RT_ERROR
;
goto
__exit
;
...
...
bsp/stm32/libraries/HAL_Drivers/drv_flash/drv_flash_l4.c
浏览文件 @
08bc2b3f
...
...
@@ -244,7 +244,7 @@ int stm32_flash_erase(long offset, size_t size)
/* Get the 1st page to erase */
FirstPage
=
GetPage
(
addr
);
/* Get the number of pages to erase from 1st page */
NbOfPages
=
GetPage
(
addr
+
size
)
-
FirstPage
+
1
;
NbOfPages
=
GetPage
(
addr
+
size
-
1
)
-
FirstPage
+
1
;
/* Get the bank */
BankNumber
=
GetBank
(
addr
);
/* Fill EraseInit structure*/
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录