STM32内部Flash极速赛车网站开发C语音基础知识

真的很着急,看那极速赛车网站开发 haozbbs.comQ1446595067 些老师云里雾里说来说去,他们知道自己说的是什么吗?

正点原子:第67讲 FLASH闪存编程原理与步骤-M3第68讲 FLASH模拟EEPROM实验-M3

其实就是说STM32的闪存,主要是读/写/擦除,做出了一个风格和SPI FLASH一致的模块。

而所谓的模拟EEPROM其实是:前者是页为单位,写之前要擦除,一擦就是2k这样(李工说:主要是器件只能1-->0而不能0-->1所以擦除其实是全部覆盖成1),而后者EEPROM是任意字节的读写。模拟就是先把Flah的东西读出来,在把要写的拼接进去,随后一起写入,假装你可以单字节控制。

说两个C基础知识:

其一

u16 STMFLASH_ReadHalfWord(u32 faddr)
{
return (vu16)faddr;
}

这是直接去读,地址给我,我转化就行!以前是(&a) 现在呢?地址是确定是 是(a)

其二

void St_Flash_Write(unsigned char* pBuffer,unsigned int WriteAddr,short NumByteTowrite)
{
short i=0;
unsigned int data;
for(i=0;i<NumByteTowrite;i+=4)
{
data=(pBuffer[i+3]<<24)|(pBuffer[i+2]<<16)|(pBuffer[i+1]<<8)|(pBuffer[i+0]);//3-2-1-0//0-1-2-3
St_Flash_Write_U32(WriteAddr+i,data);
}
}

传入一个u8的数组,在里面我自己操作的,每4个拼接成一个U32,真是愚蠢。

改进1

data = (unsigned int )&pBuffer[i];

这样就好了,别自己手动搞。

改进2

其实可以更加高级一点,现在别人传递参数u8数组,是挺方便的,我可以让别人在传递参数的强行转化成U32。

const u8 T_Buffer[]={"HELLO"};
#define SIZE sizeof(T_Buffer) //数组长度
#define FLASH_SAVE_ADDR 0X0807F800
St_Flash_Page_Clear(FLASH_SAVE_ADDR);
St_Flash_Write((u32*)T_Buffer,FLASH_SAVE_ADDR,SIZE);

这样也挺好的!自动转化了,效果呢?

自己的函数要优化一下

void St_Flash_Write(unsigned int pBuffer,unsigned int WriteAddr,short NumByteTowrite)
{
short i=0;
short total=NumByteTowrite%4?(NumByteTowrite/4+1):(NumByteTowrite/4);
for(i=0;i<total;i++)
{
St_Flash_Write_U32(WriteAddr+i
4,pBuffer[i]);
}
// while(pBuffer[i])
// {St_Flash_Write_U32(WriteAddr+i*4,pBuffer[i]);
// i++;};

}

上面两种方法都可以。第一种是重新确定数组长度u8的时候是5变成U32就是2啦!第二种也好,不需要长度了,数组结束的地方是0

原文地址:http://blog.51cto.com/13859684/2139167

时间: 2024-12-29 19:27:51

STM32内部Flash极速赛车网站开发C语音基础知识的相关文章

在Docker内安装极速赛车架设开发运行和基础配置

这里是在极速赛车架设开发 Q1446595067 环境下安装docker之后,在doucer内安装jenkins --------------------docker 安装 jenkins----------------------------------- docker pull jenkins mkdir /home/jenkins 创建文件夹 ls -nd jenkins/ 查看文件权限 chown -R 1000:1000 jenkins/ 给uid为1000的权限 docker run

自己练习极速赛车平台开发写的--C#基础篇十小练习

[csharp] view plain copy极速赛车平台开发论坛:haozbbs.com Q1446595067 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace P03 { class Program { static void Main(string[] args) { Test03_01

SpringMVC+Hiberna北京te赛车网站开发在线项目管理网站

北京te赛车网站开发haozbbs.com Q1446595067该项目是模拟高校的项目管理而开发的,主要实现对项目的生命周期管理.主要分三种角色:学生,指导老师和学校负责人,还是画个草图吧,看看他们的关系如何: 好吧,原谅图太丑,不过相信大家都大概看得懂.接下来说说具体界面吧: 1.登录界面: 主要使用了Ajax来做账号密码验证,如果正确,那么就进入系统,否则就提示账号密码错误! 学生页面: 其实还有很多图,就不一一上传了.. 至于技术嘛,也不想说,因为太多太多太多... 指导老师页面: 学校

网站开发_从基础做起2

一超链接的四种样式 假定一个超链接  <a href = www.561.cn>这是一个超链接</a> a:link {color: #FF0000} /* 未访问的链接 */ a:visited {color: #00FF00} /* 已访问的链接 */ a:hover {color: #FF00FF} /* 鼠标移动到链接上 */ a:active {color: #0000FF} /* 选定的链接 */ 以上分别定义了超链接未访问时的链接样式,已访问的链接样式,鼠标移上时链接

网站开发_从基础做起1

推荐一个网站:标准之路,讲解网站开发确实很详细,带有实例边讲边实践,很是惊喜 就本人的经验来说,网站开发基础可以去w3School中学习html以及css的基本语法,然后参考上面提到网站的DIV+CSS教程 一步一步搭建起来自己的第一个网页,进步还是会很快的. 以下为学习中记录下来的笔记,常常记录,打好基础. 1.文档类型 doctype 它的目的是要告诉标准通用标记语言解析器,它应该使用什么样的文档类型定义(DTD)来解析文档.删除后可能引起某些样式表失效或其它意想不到的问题. XHTML 定

STM32学习之路-LCD驱动(1)&lt;基础知识&gt;

[1]以下关于 JVM 的叙述,哪些项正确? A.JVM 运行于操作系统之上,它依赖于操作系统 B.JVM 运行于操作系统之上,它与操作系统无关 C.JVM 支持 Java 程序运行,它能够直接运行 Java 字节码文件 D.JVM 支持 Java 程序运行,它能够直接运行 Java 源代码文件 扩展名为.java的是源代码文件(文本文件):开发时编写代码的文件 扩展名为.class的是字节码文件(二进制):系统运行时执行的文件 [2]下列选项中正确的表达式是: A.byte b = 128; 

前端开发:css基础知识之盒模型以及浮动布局。

前端开发:css基础知识之盒模型以及浮动布局 前言 楼主的蛮多朋友最近都在学习html5,他们都会问到同一个问题 浮动是什么东西?  为什么这个浮动没有效果?  这个问题楼主已经回答了n遍.今天则是把它写到我的博客中,想知道自己过来翻就好啦 ^_^  下面楼主把当前的自己对css的基础认知一一给大家道来...... 盒模型 谈到盒模型,有经验的小伙伴一定滚瓜烂熟,无非就是 内容(content).填充(padding).边框(border).边界(margin): 这些属性我们可以把它转移到我们

SQL点滴17—使用数据库引擎存储过程,系统视图查询,DBA,BI开发人员必备基础知识

原文:SQL点滴17-使用数据库引擎存储过程,系统视图查询,DBA,BI开发人员必备基础知识 在开发过程中会遇到需要弄清楚这个数据库什么时候建的,这个数据库中有多少表,这个存储过程长的什么样子等等信息,今天把自己工作过程中经常用到的一些数据库引擎存储过程,系统视图等等总结一下以备不时之用.下面的知识多是自己总结,有一些参考了MSDN. sp_help 有时候想尽快查出数据库对象的相关信息,这个存储过程就很有用了.使用它可以查询出整个数据库中所有对象的相关信息.直接运行sp_help结果如下图1,

关于STM32内部flash的使用(续)

在使用内部FLASH的时候移植原子的程序里面使用了STMFLASH.c和stmflash.h,开始使用了系统的stm32f4xx_flash.c就出现了问题,报错Error: L6200E: Symbol __asm___17_stm32f4xx_flash_c_a2a150d6____REV16 multiply  说是定义重复了.将其去除就可以了.