0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32F1_ 外部NorFlash存储程序代码

黄工的嵌入式技术圈 来源:黄工的嵌入式技术圈 2020-04-08 09:55 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

前言

今天总结“STM32F103外部NorFlash存储程序代码”。今天提供的实例工程是存储程序代码到外部NorFlash,并执行外部NorFlash的代码(既然存储了程序代码,那么肯定也会运行NorFlash的程序)。对于储存在外部NorFlash的程序可以通过多种途径,今天主要使用MDK-ARM工具下载程序到外部NorFlash,但是需要“编程算法”,但这些算法官方都已经写好了的,我们只需要配置一下,直接使用就是了。

NOR FLASH是很常见的一种存储芯片,掉电不会丢失数据。 NOR FLASH支持Execute On Chip,即程序可以直接在FLASH片内执行。这点和NAND FLASH不一样。因此,在嵌入式系统中,NOR FLASH很适合作为程序的存储介质。 NOR FLASH的读取和RAM很类似,但不可以直接进行写操作。对NOR FLASH的写操作需要遵循特定的命令序列,最终由芯片内部的控制单元完成写操作

下载

今天提供下载的“软件工程”都是在硬件板子上进行多次测试、并保证没问题才上传至360云盘。

今天的软件工程下载地址(360云盘):

https://yunpan.cn/cSSbuXYC82jNu访问密码 8967

STM32F10x的资料可以在我360云盘下载:

https://yunpan.cn/crBUdUGdYKam2访问密码 ca90

内容讲解

工程概要说明: 例程定义了两个函数“Nor_Fun”存储在外部NorFlash,即外部NorFlash程序,定义一个函数“Flash_Fun”储存在内部FLASH,通过执行这三个函数,再打印它们函数接口对应的地址,这样就可以检测这三个函数储存的位置了。

提供的工程以简单为原则,详细中文注释,方便自己方便大家。

关于“STM32F103 外部SRAM作为运行内存”我把重要的几点在下面分别讲述:

一、获取现成文件

我们使用官方标准库,拷贝标准库FSMC例程里面现成的算法。拷贝“编程算法”到keil安装目录x:\Keil_v5\ARM\Flash里面,拷贝“FLASH_NOR.ini”到我们自己创建的工程里面(随便一个位置,方便调用,我们工程是在“\Libraries\CMSIS\DeviceSupport\startup”下面)。


二、配置Nor地址

配置Nor地址,见下图。

注意:图中1,2不要勾上。


三、配置编程算法

拷贝了“编程算法”就可以看见算法文件。

四、初始化NOR


路径就是上面你拷贝的路劲。

五、打印(测试)结果


通过测试函数和依次打印的数据可以看得出外部Nor的地址是0x6400xxxx,而内部Flash地址的0x0800xxxx。说明外部Nor函数确实储存在外部NorFlash里面。

说明

今天提供的软件工程基于STM32F103大容量芯片,中等及小容量芯片没有FSMC功能,自然也不能使用。其实只要适当修改工程的部分配置,STM32F1有FSCM功能的芯片都适用。由于这一块的知识相对来说复杂一点,还有很多地方没有讲解到位,请根据提供的工程自行研究。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 存储
    +关注

    关注

    13

    文章

    4692

    浏览量

    89541
  • STM32F10
    +关注

    关注

    0

    文章

    49

    浏览量

    16126
  • NORFlash
    +关注

    关注

    0

    文章

    25

    浏览量

    9918
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    STM32 EEPROM存储扩展板技术解析与应用指南

    STMicroelectronics X-NUCLEO-EEICA1 I²C EEPROM存储器扩展板非常适合用于M24256E-F和M24M01E-F系列I^2^C EEPROM
    的头像 发表于 10-21 16:22 407次阅读
    ‌<b class='flag-5'>STM32</b> EEPROM<b class='flag-5'>存储</b>扩展板技术解析与应用指南

    嵌入式系统中,FLASH 中的程序代码必须搬到 RAM 中运行吗?

    嵌入式系统里,FLASH 中的程序代码并非必须搬到 RAM 中运行,这得由硬件配置、实际性能需求和应用场景共同决定。就像很多低端单片机,无论是依赖片内 Flash 还是外挂的 SPI NOR
    的头像 发表于 08-06 10:19 1130次阅读
    嵌入式系统中,FLASH 中的<b class='flag-5'>程序代码</b>必须搬到 RAM 中运行吗?

    请问如何创建在 RAM 区域完全独立运行的闪存驱动程序代码

    我在开发闪存驱动程序代码时遇到了一个问题。我将准备好的HEX文件写入指定的RAM区域,并尝试使用指针调用,但调用失败,无法正常擦除或写入。对于flash的操作代码已经通过了单独的测试,为了使其更加
    发表于 07-25 07:33

    STM32F10xxx参考手册

    STM32F1XX数据手册中文版
    发表于 07-10 16:09 6次下载

    如何根据具体需求选择辉芒微8位MCU的型号?

    选择辉芒微 8 位 MCU 型号做产品项目开发时,需要考虑以下几个方面,捷尚微技术工程师老唐跟你来分享一下。 一、存储容量 1程序存储: 根据程序
    的头像 发表于 06-27 14:25 465次阅读

    STM32F40xxx和STM32f41xx flash编程手册

    PM0081_STM32F40xxx and STM32F41xxx单片机编程手册
    发表于 06-06 17:02 4次下载

    STM32N6使用SDMMC1-eMMC作为外部存储器,地址如何配置?

    STM32N6 使用SDMMC1-eMMC作为外部存储器(保存FSBL和app),因为eMMC不支持内存映射,那么使用STM32CubePr
    发表于 04-28 08:02

    STM32N6使用SDMMC1-eMMC作为外部存储器,地址如何配置?

    STM32N6 使用SDMMC1-eMMC作为外部存储器(保存FSBL和app),因为eMMC不支持内存映射,那么使用STM32CubePr
    发表于 04-22 11:31

    STM32F103x8 STM32F103xB单片机数据手册

    STM32F103x8STM32F103xB单片机数据手册
    发表于 04-14 14:55 6次下载

    STM32F103×8/STM32F103×B MCU手册

    本文提供了STM32F103x8和STM32F103xB中密度高性能系列微控制器的订购信息和机械器件特性。有关整个STMicroelectronics STM32F103xx系列的更多信息,请
    发表于 03-18 16:37 0次下载

    STM32F1能使用11.059Mhz外部晶振吗?怎么设置系统频率和PLL?

    请问STM32F1能使用11.059Mhz外部晶振吗?如果可以,怎么设置系统频率和PLL?
    发表于 03-14 06:31

    STM32从哪里可以看出芯片是否支持外部存储扩展?

    STM32从哪里可以看出芯片是否支持外部存储扩展,从什么可以选出合适的芯片,主要是速度这些,大概率是怎么看的,时钟树是怎么理解的
    发表于 03-10 06:16

    STM32H753IIT6 一款32位微控制器MCU/MSP430F5325IPNR一款16位MCU

    的备份SRAM,满足大量程序代码和数据存储需求‌。 3、丰富的外设接口‌:提供三个ADC、两个DAC、两个超低功耗比较器、一个低功耗RTC、一个高分辨率定时器、12个通用16位定时器、两个用于电机控制
    发表于 02-21 14:59

    关于cc2541程序代码样例

    CC2541哪里有cc2541的模数转换模块和蓝牙模块的程序代码样例呀?初学不懂
    发表于 01-20 07:14

    STM32WB55RG开发(2)----STM32CubeProgrammer烧录

    程序接口(UART、USB DFU、I2C、SPI和CAN)读取、写入及验证器件内存。 STM32CubeProgrammer的功能广泛,可以对STM32内部存储器(如Flash、R
    的头像 发表于 12-16 15:52 2911次阅读
    <b class='flag-5'>STM32</b>WB55RG开发(2)----<b class='flag-5'>STM32</b>CubeProgrammer烧录