gd32_flash.c 1.4 KB

123456789101112131415161718192021222324252627282930313233343536
  1. #include "gd32f30x.h"
  2. #include "gd32_flash.h"
  3. /*-------------------------------------------------*/
  4. /*函数名:擦除FLASH */
  5. /*参 数:start:擦除起始扇区 num:擦几个扇区 */
  6. /*返回值:无 */
  7. /*-------------------------------------------------*/
  8. void GD32_EraseFlash(uint16_t start, uint16_t num)
  9. {
  10. uint16_t i; //用于for循环
  11. fmc_unlock();
  12. for(i=0;i<num;i++){
  13. fmc_page_erase((0x08000000 + start * 1024) + (1024 * i));
  14. }
  15. fmc_lock();
  16. }
  17. /*---------------------------------------------------------------------*/
  18. /*函数名:写入FLASH */
  19. /*参 数:saddr:写入地址 wdata:写入数据指针 wnum:写入多少个字节 */
  20. /*返回值:无 */
  21. /*---------------------------------------------------------------------*/
  22. void GD32_WriteFlash(uint32_t saddr, uint32_t *wdata, uint32_t wnum)
  23. {
  24. fmc_unlock();
  25. while(wnum){
  26. fmc_word_program(saddr,*wdata);
  27. wnum-=4;
  28. saddr+=4;
  29. wdata++;
  30. }
  31. fmc_lock();
  32. }