⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 flash.c

📁 CHIPCON公司射频芯片CC1100驱动程序
💻 C
字号:
// 参数: addr 为地址 , 范围 0x1000~0xFFFF
////////////////////////////////////////////////////
//Byte 0 : Channel                   0xff00             
//Byte 1-2 : Build Serial Number     0xff01-0xff02          
//Byte 3 : Source Level Address      0xff03
//Byte 4 : Dst Level Address         0xff04
//Byte 5-7 : Up Router Table         0xff05-0xff07
//Byte 8-10 : Down Router Table      0xff08-0xff0A
////////////////////////////////////////////////////

unsigned char ReadFlash(unsigned int addr)
{
      return (*(unsigned char *)addr);
}
void WriteFlash(unsigned int addr,unsigned char d)
{
    unsigned char reg1,reg2;

    reg1=_BIC_SR(GIE);

    reg2=IE1;IE1=0;                     // 保护原来中断标志,并关闭有关中断。

    // 写一个字节数据到指定flash地址
      while (FCTL3&BUSY);               // 等待以前FLASH操作完成
      FCTL3 = FWKEY;
      FCTL1 = FWKEY+WRT;                // 发送写flash命令
      *(unsigned char *)addr=d;        // 写数据到指定的flash地址

      while(FCTL3&BUSY);                // 等待写操作完成
      FCTL1 = FWKEY;
      FCTL3 = FWKEY+LOCK;               // 对FLASH内容进行加锁保护
    

     if(reg1&GIE) _BIS_SR(GIE);         // 恢复中断标志
        IE1=reg2;

     return;
}
void EraseSectorFlash(unsigned int wAddr)
{
    unsigned char reg1,reg2;

    reg1=_BIC_SR(GIE);

    reg2=IE1;                        // 保护有关中断标志

    IE1=0;                           // 关闭IE1中断

    while(FCTL3&BUSY);               // 等待FLASH编程结束

    FCTL3 = FWKEY;                   // 为了准备编程而初始化FLASH控制寄存器3

    FCTL1 = FWKEY+ERASE;             // 发送FLASH擦除命令

    *(unsigned char *)wAddr=0;       // 启动擦除操作

    while(FCTL3&BUSY);               // 等待擦除操作完成

     FCTL1 = FWKEY;                  // 撤销任何对FLASH的操作命令

     FCTL3 = FWKEY+LOCK;             // 对FLASH内容进行加锁保护

    if(reg1&GIE) _BIS_SR(GIE);       // 恢复中断标志

         IE1=reg2;

     return;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -