<acronym id="xonnx"></acronym>
      <td id="xonnx"></td>
    1. <pre id="xonnx"></pre>

      1. 專注電子技術學習與研究
        當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

        新唐M051 CONFIG 程序

        作者:huqin   來源:本站原創   點擊數:  更新時間:2014年09月01日   【字體:

         

         新唐M051單片機config配置程序如下:
         
        #include "Config.h"
         
        #define DEBUGMSG             printf
         
        #define CONFIG_START_ADDR    0x00300000
        #define PAGE_SIZE            512
        /****************************************
        *函數名稱:ISPEnable
        *輸    入:無
        *輸    出:無
        *功    能:ISP使能
        ******************************************/
        VOID ISPEnable(VOID)
        {
            Un_Lock_Reg();
            ISPCON |= ISPEN;
        }
        /****************************************
        *函數名稱:ISPDisable
        *輸    入:無
        *輸    出:無
        *功    能:ISP禁能
        ******************************************/
        VOID ISPDisable(VOID)
        {
            Un_Lock_Reg();
            ISPCON &= ~ISPEN;
        }
        /****************************************
        *函數名稱:ISPTriger
        *輸    入:無
        *輸    出:無
        *功    能:ISP觸發
        ******************************************/
        VOID ISPTriger(VOID)
        {
            ISPTRG |= ISPGO;
            while((ISPTRG&ISPGO) == ISPGO);
        }
        /****************************************
        *函數名稱:ConfigEnable
        *輸    入:無
        *輸    出:無
        *功    能:Config使能
        ******************************************/
        VOID ConfigEnable(VOID)
        {
            Un_Lock_Reg();
            ISPCON |= CFGUEN;
         
        }
        /****************************************
        *函數名稱:ConfigErase
        *輸    入:無
        *輸    出:無
        *功    能:Config區 擦除
        ******************************************/
        VOID ConfigErase(VOID)
        {
            ISPEnable();
            ConfigEnable();
            ISPCMD = PAGE_ERASE;
            ISPADR = CONFIG_START_ADDR;
            ISPTriger();
            ISPDisable();
        }
        /****************************************
        *函數名稱:Config0Write
        *輸    入:無
        *輸    出:無
        *功    能:Config0區 寫
        ******************************************/
        VOID Config0Write(UINT32 unData)
        {
            ISPEnable();
            ConfigEnable();
            ISPCMD = PROGRAM;
            ISPADR = CONFIG_START_ADDR+0x00;
            ISPDAT = unData;
            ISPTriger();
            ISPDisable();  
        }
        /****************************************
        *函數名稱:Config1Write
        *輸    入:無
        *輸    出:無
        *功    能:Config1區 寫
        ******************************************/
        VOID Config1Write(UINT32 unData)
        {
            ISPEnable();
            ConfigEnable();
            ISPCMD = PROGRAM;
            ISPADR = CONFIG_START_ADDR+0x04;
            ISPDAT = unData;
            ISPTriger();
            ISPDisable();
         
        }
        /****************************************
        *函數名稱:Config0Read
        *輸    入:無
        *輸    出:無
        *功    能:Config0區 讀
        ******************************************/
        UINT32 Config0Read(VOID)
        {
            UINT32 unData;
           
            ISPEnable();
            ISPCMD = READ;
            ISPADR = CONFIG_START_ADDR+0x00;
            ISPTriger();
            unData = ISPDAT;
            ISPDisable();
            return unData;
         
        }
        /****************************************
        *函數名稱:Config1Read
        *輸    入:無
        *輸    出:無
        *功    能:Config1區 讀
        ******************************************/
        UINT32 Config1Read(VOID)
        {
            UINT32 unData;
           
            ISPEnable();
            ISPCMD = READ;
            ISPADR = CONFIG_START_ADDR+0x04;
            ISPTriger();
            unData = ISPDAT;
            ISPDisable();
            return unData;
         
        }
         #include "Config.h"
        /****************************************
        *函數名稱:main
        *輸    入:無
        *輸    出:無
        *功    能:函數主體
        ******************************************/
        INT32 main(VOID)
        {
             UINT32 unConfig0Read,unConfig1Read;
          PROTECT_REG
          (
           PWRCON |= XTL12M_EN;      //默認時鐘源為外部晶振
           while((CLKSTATUS & XTL12M_STB) == 0);   //等待12MHz時鐘穩定   
           CLKSEL0 = (CLKSEL0 & (~HCLK)) | HCLK_12M; //設置外部晶振為系統時鐘
          )
          UartInit(12000000UL,9600);
         
          while(1)
          {
           DEBUGMSG("Config wirte and read test\r\n");             
           ConfigErase();         //配置區擦除
           Config0Write(0xF8FFFF7F);      //配置區寫
           Config1Write(0xEFFFFFFF);
           DEBUGMSG("Config0 wirte 0xF8FFFF7F\r\n");
           DEBUGMSG("Config1 wirte 0xEFFFFFFF\r\n");   
           unConfig0Read=Config0Read();     //配置區讀
           unConfig1Read=Config1Read();    
           DEBUGMSG("Config0 read %X\r\n",unConfig0Read);
           DEBUGMSG("Config1 read %X\r\n",unConfig1Read);   
           DEBUGMSG("\r\n\r\n");
           Delayms(1000);  
          }
        }
         
        關閉窗口
        欧美性色欧美精品视频,99热这里只有精品mp4,日韩高清亚洲日韩精品一区二区,2020国自产拍精品高潮