doublesan 发表于 2021-3-29 20:58

华大HC32F130J8如何使用内部FLASH存储用户数据

大家好,HC32F130这颗芯片用华大官网FLASH读写案例操作,能存用户数据,但是我的工程中开通了TIM中断和UART中断,导入FLASH读写程序后,程序跑到FLASH写操作时就会跑飞,请问有这方面经验的朋友指点一二,非常感谢!

walton1226 发表于 2021-3-30 08:23

写Flash耗时5ms以上,要禁止中断

doublesan 发表于 2021-3-30 13:46

walton1226 发表于 2021-3-30 08:23
写Flash耗时5ms以上,要禁止中断

在网上找了一些资料,说是把写FLASH放在RAM中执行,能够规避与中断之间的冲突,不知道对不对,试了一下之后也是不行,搞得有点尴尬!

Nicehui 发表于 2022-1-15 13:19

俺也一样,请问可以写入了吗?

Nicehui 发表于 2022-1-15 14:04

俺的问题找到了,是因为flash配置时钟不对, 注意以下这个函数
*****************************************************************************
** \brief FLASH 初始化函数——中断服务程序、编程时间配置及低功耗模式
**
** 该函数用于配置中断服务函数、低功耗模式、根据系统时钟配置FLASH编程时间相关寄存器.
**
** \param u8FreqCfg      FLASH编程时钟频率配置(根据HCLK的频率选择配置值):
**                               1      - 4MHz;
**                               2      - 8MHz;
**                               4      - 16MHz;
**                               6      - 24MHz;
**                               8      - 32MHz;
**                               12   - 48MHz;
**                               other   -无效值
** \param bDpstbEn          TRUE- 当系统进入DeepSleep模式,FLASH进入低功耗模式;
**                               FALSE - 当系统进入DeepSleep模式,FLASH不进入低功耗模式;
**
** \retval Ok                  操作成功.
** \retval ErrorInvalidParameter 参数无效.
** \retval ErrorUninitialized    初始化失败。
*****************************************************************************/
en_result_t Flash_Init(uint8_t u8FreqCfg, boolean_t bDpstbEn)

ddxx 发表于 2022-1-17 09:36

修改scf文件,在flash尾部按sector大小分割出一块,专门用于存储数据,这样不会存在擦除代码区风险。

yangxiaor520 发表于 2022-1-17 20:43

当做数据存储区操作
页: [1]
查看完整版本: 华大HC32F130J8如何使用内部FLASH存储用户数据