[DemoCode下载] 新唐M051 CONFIG 程序

[复制链接]
1047|10
 楼主| Messi1999 发表于 2015-8-4 20:12 | 显示全部楼层 |阅读模式
  1. #include "Config.h"

  2. #define DEBUGMSG             printf

  3. #define CONFIG_START_ADDR    0x00300000
  4. #define PAGE_SIZE            512
  5. /****************************************
  6. *函数名称:ISPEnable
  7. *输    入:无
  8. *输    出:无
  9. *功    能:ISP使能
  10. ******************************************/
  11. VOID ISPEnable(VOID)
  12. {
  13.     Un_Lock_Reg();
  14.     ISPCON |= ISPEN;
  15. }
  16. /****************************************
  17. *函数名称:ISPDisable
  18. *输    入:无
  19. *输    出:无
  20. *功    能:ISP禁能
  21. ******************************************/
  22. VOID ISPDisable(VOID)
  23. {
  24.     Un_Lock_Reg();
  25.     ISPCON &= ~ISPEN;
  26. }
  27. /****************************************
  28. *函数名称:ISPTriger
  29. *输    入:无
  30. *输    出:无
  31. *功    能:ISP触发
  32. ******************************************/
  33. VOID ISPTriger(VOID)
  34. {
  35.     ISPTRG |= ISPGO;
  36.     while((ISPTRG&ISPGO) == ISPGO);
  37. }
  38. /****************************************
  39. *函数名称:ConfigEnable
  40. *输    入:无
  41. *输    出:无
  42. *功    能:Config使能
  43. ******************************************/
  44. VOID ConfigEnable(VOID)
  45. {
  46.     Un_Lock_Reg();
  47.     ISPCON |= CFGUEN;

  48. }
  49. /****************************************
  50. *函数名称:ConfigErase
  51. *输    入:无
  52. *输    出:无
  53. *功    能:Config区 擦除
  54. ******************************************/
  55. VOID ConfigErase(VOID)
  56. {
  57.     ISPEnable();
  58.     ConfigEnable();
  59.     ISPCMD = PAGE_ERASE;
  60.     ISPADR = CONFIG_START_ADDR;
  61.     ISPTriger();
  62.     ISPDisable();
  63. }
  64. /****************************************
  65. *函数名称:Config0Write
  66. *输    入:无
  67. *输    出:无
  68. *功    能:Config0区 写
  69. ******************************************/
  70. VOID Config0Write(UINT32 unData)
  71. {
  72.     ISPEnable();
  73.     ConfigEnable();
  74.     ISPCMD = PROGRAM;
  75.     ISPADR = CONFIG_START_ADDR+0x00;
  76.     ISPDAT = unData;
  77.     ISPTriger();
  78.     ISPDisable();  
  79. }
  80. /****************************************
  81. *函数名称:Config1Write
  82. *输    入:无
  83. *输    出:无
  84. *功    能:Config1区 写
  85. ******************************************/
  86. VOID Config1Write(UINT32 unData)
  87. {
  88.     ISPEnable();
  89.     ConfigEnable();
  90.     ISPCMD = PROGRAM;
  91.     ISPADR = CONFIG_START_ADDR+0x04;
  92.     ISPDAT = unData;
  93.     ISPTriger();
  94.     ISPDisable();

  95. }
  96. /****************************************
  97. *函数名称:Config0Read
  98. *输    入:无
  99. *输    出:无
  100. *功    能:Config0区 读
  101. ******************************************/
  102. UINT32 Config0Read(VOID)
  103. {
  104.     UINT32 unData;
  105.    
  106.     ISPEnable();
  107.     ISPCMD = READ;
  108.     ISPADR = CONFIG_START_ADDR+0x00;
  109.     ISPTriger();
  110.     unData = ISPDAT;
  111.     ISPDisable();
  112.     return unData;

  113. }
  114. /****************************************
  115. *函数名称:Config1Read
  116. *输    入:无
  117. *输    出:无
  118. *功    能:Config1区 读
  119. ******************************************/
  120. UINT32 Config1Read(VOID)
  121. {
  122.     UINT32 unData;
  123.    
  124.     ISPEnable();
  125.     ISPCMD = READ;
  126.     ISPADR = CONFIG_START_ADDR+0x04;
  127.     ISPTriger();
  128.     unData = ISPDAT;
  129.     ISPDisable();
  130.     return unData;

  131. }
  132. #include "Config.h"
  133. /****************************************
  134. *函数名称:main
  135. *输    入:无
  136. *输    出:无
  137. *功    能:函数主体
  138. ******************************************/
  139. INT32 main(VOID)
  140. {
  141.      UINT32 unConfig0Read,unConfig1Read;
  142.   PROTECT_REG
  143.   (
  144.    PWRCON |= XTL12M_EN;      //默认时钟源为外部晶振
  145.    while((CLKSTATUS & XTL12M_STB) == 0);   //等待12MHz时钟稳定   
  146.    CLKSEL0 = (CLKSEL0 & (~HCLK)) | HCLK_12M; //设置外部晶振为系统时钟
  147.   )
  148.   UartInit(12000000UL,9600);

  149.   while(1)
  150.   {
  151.    DEBUGMSG("Config wirte and read test\r\n");            
  152.    ConfigErase();         //配置区擦除
  153.    Config0Write(0xF8FFFF7F);      //配置区写
  154.    Config1Write(0xEFFFFFFF);
  155.    DEBUGMSG("Config0 wirte 0xF8FFFF7F\r\n");
  156.    DEBUGMSG("Config1 wirte 0xEFFFFFFF\r\n");   
  157.    unConfig0Read=Config0Read();     //配置区读
  158.    unConfig1Read=Config1Read();   
  159.    DEBUGMSG("Config0 read %X\r\n",unConfig0Read);
  160.    DEBUGMSG("Config1 read %X\r\n",unConfig1Read);   
  161.    DEBUGMSG("\r\n\r\n");
  162.    Delayms(1000);  
  163.   }
  164. }


mintspring 发表于 2015-8-4 20:30 | 显示全部楼层
么有说明这个配置函数,是配置什么东西的。
598330983 发表于 2015-8-4 20:52 | 显示全部楼层
函数名称:ISPEnable
*输    入:无
*输    出:无
*功    能:ISP使能
这是一个ISP函数。
春风的暖暖 发表于 2015-8-4 21:46 | 显示全部楼层
不知道这个函数用来干什么用
Luis德华 发表于 2015-8-6 21:05 | 显示全部楼层
这个配置函数是配置啥的啊?
史迪威将军 发表于 2015-8-7 09:09 | 显示全部楼层
楼主,这个是配置ISP下载的吗
玛尼玛尼哄 发表于 2015-8-7 10:10 | 显示全部楼层
这个配置是做ISP用的,不知道这个ISP是做什么用的。
598330983 发表于 2015-8-7 16:17 | 显示全部楼层
真是没用过这个,第一次见到,感觉好新鲜。
mintspring 发表于 2015-8-7 17:17 | 显示全部楼层
没看懂这个程序能做什么具体的工作。
598330983 发表于 2015-8-8 21:48 | 显示全部楼层
ISPEnable();
    ISPCMD = READ;
    ISPADR = CONFIG_START_ADDR+0x00;
着相似而还是比较难以理解的。起码不知道READ是什么了
mintspring 发表于 2015-8-9 19:06 | 显示全部楼层

不知道这个函数用来干什么用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

363

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部