csr1010吧 关注:16贴子:126
  • 4回复贴,共1
#ifndef __NVM_ACCESS_H__
#define __NVM_ACCESS_H__
#include <types.h> /* Commonly used type definitions */
/*NVM一旦读/写操作完成执行必要的行动来节省电力*/
extern void Nvm_Disable(void);
/*读操作后,执行必要的行动来节约电能.读单词从NVM存储后准备NVM是可读的。
* buffer [out] Data read from NVM
* length [in] Number of words of data to read
* offset [in] Offset from which to start reading, in words*/
extern void Nvm_Read(uint16 *buffer, uint16 length, uint16 offset);
/*写操作后,执行必要的行动来节约电能.读单词从NVM存储后准备NVM是可读的。
* PARAMETERS
* buffer [in] Data to write to NVM
* length [in] Number of words of data to write
* offset [in] Offset from which to start writing, in words-*/
extern void Nvm_Write(uint16 *buffer, uint16 length, uint16 offset);
#endif /* __NVM_ACCESS_H__ */


1楼2015-02-06 22:39回复
    #include <pio.h> /* PIO配置和控制功能 */
    #include <nvm.h> /*访问非易失性内存 */
    #include <i2c.h> /* I2C总线访问*/
    #include <panic.h> /* 支持应用程序的恐慌*/
    #include "nvm_access.h" /* 这个文件界面*/
    #include "gatt_server.h" /* 关贸总协定服务器定义使用*/
    /*读写,操作后,执行必要的行动来节约电能
    * buffer [out] Data read from NVM
    * length [in] Number of words of data to read
    * offset [in] Offset from which to start reading, in words-*/
    void Nvm_Disable(void) /*NVM一旦读/写操作完成-执行必要的行动来节省电力*/
    {
    NvmDisable();/* Disable the NVM. */
    PioSetI2CPullMode(pio_i2c_pull_mode_strong_pull_down);/* I2C线拉下来节约电能 */


    2楼2015-02-06 22:48
    回复
      void Nvm_Read(uint16 *buffer, uint16 length, uint16 offset)
      {
      sys_status result
      result = NvmRead(buffer, length, offset); /*固件还可以重新开启NVM如果是禁用的*/
      Nvm_Disable(); /*读操作后禁用NVM以节省电力*/
      if(sys_status_success != result) /* 报告恐慌如果NVM读不成功 */
      {
      ReportPanic(app_panic_nvm_read);
      }
      }/*写操作后,执行必要的行动来节约电能*/


      3楼2015-02-06 22:48
      回复
        读写完成须进入省电模式


        IP属地:广东来自Android客户端5楼2015-02-12 12:34
        回复
          #include <pio.h>
          #include <nvm.h>
          #include <i2c.h>
          #include <panic.h>
          #include "nvm_access.h"
          #include "app_gatt.h"
          /* 一旦读/写操作完成这个函数是用来执行必要的东西在NVM节省电力*/
          extern void Nvm_Disable(void)
          {
          NvmDisable();/* Disable the NVM. */
          PioSetI2CPullMode(pio_i2c_pull_mode_strong_pull_down);/* I2C线拉下来节约电能.*/
          }
          /*读单词从NVM存储后准备NVM是可读的。缓冲*/
          extern void Nvm_Read(uint16* buffer, uint16 length, uint16 offset)
          {
          sys_status result; /* 如果是禁用的固件还可以重新开启NVM */
          result = NvmRead(buffer, length, offset);
          Nvm_Disable(); /* 读操作后禁用NVM以节省电力 */
          if(sys_status_success != result) /*报告恐慌NVM读不成功 */
          {
          ReportPanic(app_panic_nvm_read);
          }
          }
          extern void Nvm_Write(uint16* buffer, uint16 length, uint16 offset)
          {
          sys_status result; /*如果是禁用的固件还可以重新开启NVM */
          result = NvmWrite(buffer, length, offset);
          Nvm_Disable(); /* 写操作后禁用NVM以节省电力 */
          if(sys_status_success == result)/* 如果NvmWrite很成功,返回 */
          {
          return;/* 写的很成功. */
          }
          #ifdef NVM_TYPE_FLASH
          else if(nvm_status_needs_erase == result)
          {
          /* NVM数据的应用程序已经有一个副本的变量,所以我们可以消除NVM */
          Nvm_Erase(); /* 回信NVM的数据以下函数将数据写入NVM和 不应该失败. */
          WriteApplicationAndServiceDataToNVM();
          }
          #endif
          else
          {
          ReportPanic(app_panic_nvm_write);/* 不能挽回的错误。重置芯片*/
          }
          }
          #ifdef NVM_TYPE_FLASH
          extern void Nvm_Erase(void) /*-擦除NVM内存*/
          {
          sys_status result;
          result = NvmErase(TRUE); /* 自动擦除之前使NVM */
          Nvm_Disable();/* 禁用NVM后擦除 */
          if(sys_status_success != result)/* 如果NvmErase失败,报告 */
          {
          ReportPanic(app_panic_nvm_erase);
          }
          }
          #endif /* NVM_TYPE_FLASH */


          IP属地:广东6楼2015-02-28 11:33
          回复