有关flash的操作

     一般的单片机里面都会集成可编程的FLASH存储器,用于程序代码和非易失数据的存储。现行单片机FLASH的大小有32KB,64KB,128KB,256KB等。从汇编角度来操作FLASH的话,则需要用MOVX指令进行在线编程。一旦FLASH位被清零,只能通过擦除才能将其志为1状态。

   我们对FLASH的操作分为三种:读FLASH,写FLASH以及擦除FLASH

   读FLASH:在进行读FLASH时并没有改变FLASH里面的值,因此没有什么需要特别需要注意的情况。在此不作详细解读。

   在包含写和/或擦除FLASH存储器的代码的任何系统中,为了保证FLASH内容的完整性,必须使能VDD 监视器并将其设置为复位源。而且在使能VDD 监视器和将其使能为复位源之间不应有延时。在VDD 监视器被禁止或未被使能为复位源期间,对FLASH 存储器执行任何擦除或写操作都将导致FLASH 错误器件复位。

   用软件写和擦除flash时受flash锁定和关键码功能的保护。在进行FLASH 操作之前,必须按顺序向FLASH 锁定和关键码寄存器(FLKEY)写入正确的关键码。关键码为:0xA5,0xF1。写关键码的时序并不重要,但必须按顺序写。如果写关键码的顺序不对或写入了错误的关键码,FLASH 写和擦除操作将被禁止,直到下一次系统复位。如果在正确写入关键码之前进行了FLASH 写或擦除操作,FLASH 写和擦除也将被禁止。每次FLASH 写和擦除操作之后,FLASH 锁定功能复位;在进行下一次FLASH 写或擦除操作之前,必须重新写关键码。

一:擦除FLASH 操作步骤:

FLASH 存储器是以1024 字节的页为单位组织的,擦除操作将擦除一个整页(将页内的所
有字节置为0xFF)。擦除一个1024 字节页的步骤如下:
1. 保存当前中断状态并禁止中断。
2. 置1 程序存储器擦除允许位(PSCTL 中的PSEE)。
3. 置1 程序存储器写允许位(PSCTL 中的PSWE)。
4. 向FLKEY 写第一个关键码:0xA5。
5. 向FLKEY 写第二个关键码:0xF1。

6. 用MOVX 指令向待擦除页内的任何一个地址写入一个数据字节。
7. 清除PSWE 和PSEE 位。
8. 恢复操作前的中断状态。

二:写FLASH操作步骤:
用软件对FLASH 字节编程的步骤如下:
1. 保存当前中断状态并禁止中断。
2. 保证FLASH 字节已经被擦除(值为0xFF)。
3. 置位寄存器PSCTL 中的PSWE 位。
4. 清除寄存器PSCTL 中的PSEE 位。
5. 向FLKEY 写第一个关键码:0xA5。
6. 向FLKEY 写第二个关键码:0xF1。
7. 用MOVX 指令向1024 字节扇区内的目标地址写入一个数据字节。
8. 清除PSWE 位。
9. 恢复操作前的中断状态。

特别注意:写FLASH 存储器可以清除数据位,但不能使数据位置1;只有擦除操作能将FLASH 中的数据位置1。在写入新值之前,必须先擦除待编程的字节地址。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在MATLAB中实现机械臂的仿真可以使用Robotic System Toolbox来进行。Robotic System Toolbox包含许多工具和函数,可以实现机械臂的建模、控制和仿真。 首先,需要定义机械臂的模型。可以使用robotics.RigidBodyTree类来创建机械臂的刚体树结构。通过添加关节和刚体可以构建机械臂的结构。可以使用函数robotics.RigidBody来创建刚体,并使用函数robotics.Joint来创建关节。 接下来,可以使用robotics.RigidBodyTree类中的函数来定义机械臂的初始状态。可以设置每个关节的初始位置和速度。 然后,可以使用robotics.RigidBodyTree类中的函数来进行机械臂的运动控制。可以使用函数robotics.InverseKinematics来实现逆运动学,根据目标位置和姿态来求解关节角度。可以使用函数robotics.CartesianTrajectory来生成机械臂的轨迹,指定起始和目标位置以及运动时间。 最后,可以使用robotics.RigidBodyTree类中的函数来进行机械臂的仿真。可以使用函数robotics.Rate来指定仿真的频率,然后使用循环来更新机械臂的状态和控制输入,实现机械臂的运动。 以下是一个基本的机械臂仿真的示例代码: ```matlab % 创建机械臂模型 robot = robotics.RigidBodyTree; % 添加机械臂的关节和刚体 % 设置机械臂的初始状态 % 运动控制 % 仿真循环 % 绘制机械臂的运动轨迹 ``` 在实际的机械臂仿真中,可能还需要考虑机械臂的动力学、碰撞检测和路径规划等问题。可以使用Robotic System Toolbox中的其他工具和函数来处理这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值