target.c
上传用户:yyhongfa
上传日期:2013-01-18
资源大小:267k
文件大小:6k
开发平台:

C/C++

  1. /****************************************Copyright (c)**************************************************
  2. **                               广州周立功单片机发展有限公司
  3. **                                     研    究    所
  4. **                                        产品一部 
  5. **
  6. **                                 http://www.zlgmcu.com
  7. **
  8. **--------------文件信息--------------------------------------------------------------------------------
  9. **文   件   名: target.c
  10. **创   建   人: 陈明计
  11. **最后修改日期: 2004年2月2日
  12. **描        述: lpc21xx(飞利浦的ARM)目标板特殊的代码,包括异常处理程序和目标板初始化程序
  13. **              每个工程应当具有这个文件的拷贝,用户根据程序的需要修改本文件。
  14. **--------------历史版本信息----------------------------------------------------------------------------
  15. ** 创建人: 陈明计
  16. ** 版  本: v1.0
  17. ** 日 期: 2004年2月2日
  18. ** 描 述: 原始版本
  19. **
  20. **------------------------------------------------------------------------------------------------------
  21. ** 修改人:
  22. ** 版  本:
  23. ** 日 期:
  24. ** 描 述:
  25. **
  26. **--------------当前版本修订------------------------------------------------------------------------------
  27. ** 修改人:
  28. ** 日 期:
  29. ** 描 述:
  30. **
  31. **------------------------------------------------------------------------------------------------------
  32. ********************************************************************************************************/
  33. #define IN_TARGET
  34. #include "config.h"
  35. //#include "lpc2106.h"
  36. /*********************************************************************************************************
  37. ** 函数名称: IRQ_Exception
  38. ** 功能描述: 中断异常处理程序,用户根据需要自己改变程序
  39. **
  40. ** 输 入: 无
  41. **
  42. ** 输 出: 无
  43. **         
  44. ** 全局变量: 无
  45. ** 调用模块: 无
  46. **
  47. ** 作 者: 陈明计
  48. ** 日 期: 2004年2月2日
  49. **-------------------------------------------------------------------------------------------------------
  50. ** 修改人:
  51. ** 日 期:
  52. **------------------------------------------------------------------------------------------------------
  53. ********************************************************************************************************/
  54.         void __irq IRQ_Exception(void)
  55. {
  56.     while(1);                   // 这一句替换为自己的代码
  57. }
  58. /*********************************************************************************************************
  59. ** 函数名称: FIQ_Exception
  60. ** 功能描述: 快速中断异常处理程序,用户根据需要自己改变程序
  61. **           
  62. ** 输 入: 无
  63. **
  64. ** 输 出: 无
  65. **         
  66. ** 全局变量: 无
  67. ** 调用模块: 无
  68. **
  69. ** 作 者: 陈明计
  70. ** 日 期: 2004年2月2日
  71. **-------------------------------------------------------------------------------------------------------
  72. ** 修改人:
  73. ** 日 期:
  74. **------------------------------------------------------------------------------------------------------
  75. ********************************************************************************************************/
  76.         void FIQ_Exception(void)
  77. {
  78.     while(1);                   // 这一句替换为自己的代码
  79. }
  80. /*********************************************************************************************************
  81. ** 函数名称: TargetInit
  82. ** 功能描述: 目标板初始化代码,在需要的地方调用,根据需要改变
  83. ** 输 入: 无
  84. **
  85. ** 输 出: 无
  86. **         
  87. ** 全局变量: 无
  88. ** 调用模块: 无
  89. **
  90. ** 作 者: 陈明计
  91. ** 日 期: 2004年2月2日
  92. **-------------------------------------------------------------------------------------------------------
  93. ** 修改人:
  94. ** 日 期:
  95. **------------------------------------------------------------------------------------------------------
  96. ********************************************************************************************************/
  97.        void TargetInit(void)
  98. {
  99.     /* 添加自己的代码 */
  100. }
  101. /*********************************************************************************************************
  102. ** 函数名称: TargetResetInit
  103. ** 功能描述: 调用main函数前目标板初始化代码,根据需要改变,不能删除
  104. ** 输 入: 无
  105. **
  106. ** 输 出: 无
  107. **         
  108. ** 全局变量: 无
  109. ** 调用模块: 无
  110. **
  111. ** 作 者: 陈明计
  112. ** 日 期: 2004年2月2日
  113. **-------------------------------------------------------------------------------------------------------
  114. ** 修改人:
  115. ** 日 期:
  116. **-------------------------------------------------------------------------------------------------------
  117. ********************************************************************************************************/
  118.         void TargetResetInit(void)
  119. {
  120. #ifdef __DEBUG_RAM    
  121.     MEMMAP = 0x2;                   //remap
  122. #endif
  123. #ifdef __DEBUG_FLASH    
  124.     MEMMAP = 0x1;                   //remap
  125. #endif
  126. #ifdef __IN_CHIP    
  127.     MEMMAP = 0x1;                   //remap
  128. #endif
  129.   PLL_Enable();
  130.     
  131.     /* 设置存储器加速模块 */
  132.     MAMCR = 0;
  133. #if Fcclk < 20000000
  134.     MAMTIM = 1;
  135. #else
  136. #if Fcclk < 40000000
  137.     MAMTIM = 2;
  138. #else
  139.     MAMTIM = 3;
  140. #endif
  141. #endif
  142.     MAMCR = 2;
  143.     
  144.     /* 初始化VIC */
  145.     VICIntEnClr = 0xffffffff;
  146.     VICVectAddr = 0;
  147.     VICIntSelect = 0;
  148.     /* 添加自己的代码 */
  149. }
  150. void PLL_Enable(void)
  151. {
  152.        /* 设置系统各部分时钟 */
  153.      PLLCON = 1;
  154. #if (Fpclk / (Fcclk / 4)) == 1
  155.     VPBDIV = 0;
  156. #endif
  157. #if (Fpclk / (Fcclk / 4)) == 2
  158.     VPBDIV = 2;
  159. #endif
  160. #if (Fpclk / (Fcclk / 4)) == 4
  161.     VPBDIV = 1;
  162. #endif
  163. #if (Fcco / Fcclk) == 2
  164.     PLLCFG = ((Fcclk / Fosc) - 1) | (0 << 5);
  165. #endif
  166. #if (Fcco / Fcclk) == 4
  167.     PLLCFG = ((Fcclk / Fosc) - 1) | (1 << 5);
  168. #endif
  169. #if (Fcco / Fcclk) == 8
  170.     PLLCFG = ((Fcclk / Fosc) - 1) | (2 << 5);
  171. #endif
  172. #if (Fcco / Fcclk) == 16
  173.     PLLCFG = ((Fcclk / Fosc) - 1) | (3 << 5);
  174. #endif
  175.     PLLFEED = 0xaa;
  176.     PLLFEED = 0x55;
  177.     while((PLLSTAT & (1 << 10)) == 0);
  178.     PLLCON = 3;
  179.     PLLFEED = 0xaa;
  180.     PLLFEED = 0x55;
  181. }
  182. void PLL_Disable(void)
  183. {
  184.        PLLCON = 0;
  185. PLLFEED = 0xaa;
  186. PLLFEED = 0x55;
  187. }
  188. /*********************************************************************************************************
  189. **                            End Of File
  190. ********************************************************************************************************/