32 F 1 0X_XX宏定义的选择32 flash大小的选择

STM32F10X_XX宏定义的选择


//=====================================================================
//TITLE:
//    STM32F10X_XX宏定义的选择
//AUTHOR:
//    norains
//DATE:
//    Tuesday  12-October-2010
//Environment:
//    KEIL MDK 4.0
//    RedCow Board
//=====================================================================

     如果你使用stm32f10x_stdperiph_lib,会发现在stm32f10x.h文件会有一段关于宏选择的代码,如:

[cpp]  view plain copy
  1. #if !defined (STM32F10X_LD) && !defined (STM32F10X_MD) && !defined (STM32F10X_HD) && !defined (STM32F10X_CL)  
  2.   /* #define STM32F10X_LD */   /*!< STM32F10X_LD: STM32 Low density devices */  
  3.   /* #define STM32F10X_MD */   /*!< STM32F10X_MD: STM32 Medium density devices */  
  4.   /* #define STM32F10X_HD */   /*!< STM32F10X_HD: STM32 High density devices */  
  5.   #define STM32F10X_CL    /*!< STM32F10X_CL: STM32 Connectivity line devices */  
  6. #endif  

    至于要使用哪个宏,则需要根据具体的芯片来进行选择。那么,这些宏又对应着哪些具体的芯片呢?其实我们可以在《Reference manual》的第九章中找到答案,如文档截图:


    这段话的意思很明显,如果是STM32F105xx和STM32F107xx,是Connectivity Line Devices,则宏定义选择的是STM32F10X_CL;如果是别的型号,则根据FLASH的容量来进行选择。可能文字写的有点不太清楚,还是以表格来说明:

MCU 型号

FLASH大小

STM32F10X_LD

STM32F101xx

STM32F102xx

STM32F103xx

16 ~ 32 Kbytes

STM32F10X_MD

STM32F101xx

STM32F102xx

STM32F103xx

64 ~ 128 Kbytes

STM32F10X_HD

STM32F101xx

STM32F103xx

256 ~ 512 Kbytes

STM32F10X_CL

STM32F105xx

STM32F107xx

忽略

    这些参数,和MDK的设备参数一致,如图所示:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于STM32G070微控制器,您可以使用它的FLASH存储器进行读写操作。以下是一个简单的示例代码,用于在STM32G070上进行FLASH读写操作。 首先,您需要包含适当的头文件和定义相关的: ```c #include "stm32g0xx_hal.h" #define FLASH_START_ADDR 0x08000000 // Flash起始地址 #define FLASH_PAGE_SIZE 2048 // Flash大小 ``` 然后,您可以编写两个函数来执行读写操作。一个是用于从FLASH中读取数据的函数,另一个是用于将数据写入FLASH的函数: ```c // 从FLASH中读取数据 void readFromFlash(uint32_t address, uint32_t *data, uint32_t count) { for (uint32_t i = 0; i < count; i++) { data[i] = *(volatile uint32_t *)(address + (4 * i)); } } // 将数据写入FLASH HAL_StatusTypeDef writeToFlash(uint32_t address, uint32_t *data, uint32_t count) { FLASH_EraseInitTypeDef eraseInitStruct; uint32_t PageError = 0; // 解锁FLASH HAL_FLASH_Unlock(); // 擦除指定地址的FLASH页 eraseInitStruct.TypeErase = FLASH_TYPEERASE_PAGES; eraseInitStruct.PageAddress = address; eraseInitStruct.NbPages = 1; if (HAL_FLASHEx_Erase(&eraseInitStruct, &PageError) != HAL_OK) { return HAL_ERROR; } // 写入数据到FLASH for (uint32_t i = 0; i < count; i++) { if (HAL_FLASH_Program(FLASH_TYPEPROGRAM_WORD, address + (4 * i), data[i]) != HAL_OK) { return HAL_ERROR; } } // 锁定FLASH HAL_FLASH_Lock(); return HAL_OK; } ``` 请注意,这只是一个简单的示例代码,并且没有包含错误处理和其他边界条件。在实际使用中,您可能需要添加适当的错误处理和边界检查。 希望这能帮助到您开始在STM32G070上进行FLASH读写操作。如有任何进一步的问题,请随时提问!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值