flash--CH32 flash操作常见问题及注意事项

flash由于其有掉电保存的特性,常用于保存重要数据,本章介绍常见注意事项以及常见问题。

一,注意事项:

1,V20X,30X  在flash操作时需要注意主频别超过120M,如必须跑144M,可以在操作flash前降频处理

 (代码:RCC->CFGR0 |= (uint32_t)RCC_HPRE_DIV2),

  操作完恢复(代码:RCC->CFGR0 &= ~(uint32_t)RCC_HPRE_DIV2)

 10X,00X,035,L10X系列没这个要求,不需要分频。

2,要注意flaSh操作要进行地址对齐操作,否则可能会有预期之外的效果。

需要执行多少字节对齐不需要牢记,只需要看下函数定义处即可,如下就是地址4K字节对齐,也就是

操作的地址必须是4K的倍数,如0x08004000,0x08005000。

 3, flash操作有自己的流程,最好参考EVT例程的流程来,正常执行开锁,擦除,编程,关锁的操作。

一,flash怎么写不成功?  读出来数值与写入的不一致

常见原因:

1)地址没对齐,如这种地址

 

2)操作前是否擦除,注意擦除完20小,30x默认字节是e339,如果不是默认的e339需要擦除。

 

 3)如果采用普通编程,操作前是否有开锁,操作完是否有关锁。

 

3)语法错误

 1,经常遇到写入的数组是u16/  u32的数组,但计算数量时用的sizeof,需注意sizeof(u16)=2,

而不是1,计算数量时可能出错。

2,u32 *p,一个8位的指针类型在执行p++后,实际指向的地址会加4,而不是1,就是假设原先读的地址时0x08004000,

加1后读的地址就是0x08004004,而不是0x08004001。

3,

4)系统主频

再者就是注意上面所述20x,30x,在操作flash时主频注意别超过120M,如果超过,目前已知的问题时可能会导致flash内容异常消失。

posted @ 2024-12-09 16:59  WCH_CH32  阅读(28)  评论(0编辑  收藏  举报