target.c
上传用户:pudewen666
上传日期:2007-06-08
资源大小:75k
文件大小:9k
源码类别:

微处理器开发

开发平台:

Windows_Unix

  1. /****************************************Copyright (c)**************************************************
  2. **                               Guangzou ZLG-MCU Development Co.,LTD.
  3. **                                      graduate school
  4. **                                 http://www.zlgmcu.com
  5. **
  6. **--------------File Info-------------------------------------------------------------------------------
  7. ** File name: target.c
  8. ** Last modified Date: 2004-09-17
  9. ** Last Version: 1.0
  10. ** Descriptions: header file of the specific codes for LPC2100 target boards
  11. ** Every project should include a copy of this file, user may modify it as needed
  12. **------------------------------------------------------------------------------------------------------
  13. ** Created by: Chenmingji
  14. ** Created date: 2004-02-02
  15. ** Version: 1.0
  16. ** Descriptions: The original version
  17. **
  18. **------------------------------------------------------------------------------------------------------
  19. ** Modified by: Chenmingji
  20. ** Modified date: 2004-09-17
  21. ** Version: 1.01
  22. ** Descriptions: Renewed the template, added more compiler supports 
  23. **
  24. **------------------------------------------------------------------------------------------------------
  25. ** Modified by: 
  26. ** Modified date:
  27. ** Version:
  28. ** Descriptions: 
  29. **
  30. ********************************************************************************************************/
  31. #define IN_TARGET
  32. #include "config.h"
  33. /*********************************************************************************************************
  34. ** Function name: IRQ_Exception
  35. **
  36. ** Descriptions: interrupt exceptional handler , change it as needed
  37. **
  38. ** input parameters: None
  39. ** Returned value: None
  40. **         
  41. ** Used global variables: None
  42. ** Calling modules: None
  43. **
  44. ** Created by: Chenmingji
  45. ** Created Date: 2004/02/02
  46. **-------------------------------------------------------------------------------------------------------
  47. ** Modified by:
  48. ** Modified date:
  49. **------------------------------------------------------------------------------------------------------
  50. ********************************************************************************************************/
  51.         void __irq IRQ_Exception(void)
  52. {
  53.     while(1);                   //  change it to your code 这一句替换为自己的代码
  54. }
  55. /*********************************************************************************************************
  56. ** Function name: FIQ_Exception
  57. **
  58. ** Descriptions: Fast interrupt exceptional handler , change it as needed
  59. **
  60. ** input parameters: None
  61. ** Returned value: None
  62. **         
  63. ** Used global variables: None
  64. ** Calling modules: None
  65. **
  66. ** Created by: Chenmingji
  67. ** Created Date: 2004/02/02
  68. **-------------------------------------------------------------------------------------------------------
  69. ** Modified by:
  70. ** Modified date:
  71. **------------------------------------------------------------------------------------------------------
  72. ********************************************************************************************************/
  73.         void FIQ_Exception(void)
  74. {
  75.     while(1);                   // change it to your code  这一句替换为自己的代码
  76. }
  77. /*********************************************************************************************************
  78. ** Function name: TargetInit
  79. **
  80. ** Descriptions: Initialize the target board; it is called in a necessary place, change it as 
  81. ** needed
  82. **
  83. ** input parameters: None
  84. ** Returned value: None
  85. **         
  86. ** Used global variables: None
  87. ** Calling modules: None
  88. **
  89. ** Created by: Chenmingji
  90. ** Created Date: 2004/02/02
  91. **-------------------------------------------------------------------------------------------------------
  92. ** Modified by:
  93. ** Modified date:
  94. **------------------------------------------------------------------------------------------------------
  95. ********************************************************************************************************/
  96.        void TargetInit(void)
  97. {
  98.     /* 添加自己的代码 */
  99.     /* Add your codes here */
  100. }
  101. /*********************************************************************************************************
  102. ** Function name: TargetResetInit
  103. **
  104. ** Descriptions: Initialize the target board before running the main() function; User may
  105. ** change it as needed, but may not deleted it.
  106. **
  107. ** input parameters: None
  108. ** Returned value: None
  109. **         
  110. ** Used global variables: None
  111. ** Calling modules: None
  112. **
  113. ** Created by: Chenmingji
  114. ** Created Date: 2004/02/02
  115. **-------------------------------------------------------------------------------------------------------
  116. ** Modified by:
  117. ** Modified date:
  118. **------------------------------------------------------------------------------------------------------
  119. ********************************************************************************************************/
  120.         void TargetResetInit(void)
  121. {
  122. #ifdef __DEBUG_RAM    
  123.     MEMMAP = 0x2;                   //remap
  124. #endif
  125. #ifdef __DEBUG_FLASH    
  126.     MEMMAP = 0x1;                   //remap
  127. #endif
  128. #ifdef __IN_CHIP    
  129.     MEMMAP = 0x1;                   //remap
  130. #endif
  131. /* 设置系统各部分时钟 */
  132. /* Set system timers for each component */
  133.     PLLCON = 1;
  134. #if (Fpclk / (Fcclk / 4)) == 1
  135.     VPBDIV = 0;
  136. #endif
  137. #if (Fpclk / (Fcclk / 4)) == 2
  138.     VPBDIV = 2;
  139. #endif
  140. #if (Fpclk / (Fcclk / 4)) == 4
  141.     VPBDIV = 1;
  142. #endif
  143. #if (Fcco / Fcclk) == 2
  144.     PLLCFG = ((Fcclk / Fosc) - 1) | (0 << 5);
  145. #endif
  146. #if (Fcco / Fcclk) == 4
  147.     PLLCFG = ((Fcclk / Fosc) - 1) | (1 << 5);
  148. #endif
  149. #if (Fcco / Fcclk) == 8
  150.     PLLCFG = ((Fcclk / Fosc) - 1) | (2 << 5);
  151. #endif
  152. #if (Fcco / Fcclk) == 16
  153.     PLLCFG = ((Fcclk / Fosc) - 1) | (3 << 5);
  154. #endif
  155.     PLLFEED = 0xaa;
  156.     PLLFEED = 0x55;
  157.     while((PLLSTAT & (1 << 10)) == 0);
  158.     PLLCON = 3;
  159.     PLLFEED = 0xaa;
  160.     PLLFEED = 0x55;
  161.     
  162.     /* 设置存储器加速模块 */
  163.     /* Set memory accelerater module*/
  164.     MAMCR = 0;
  165. #if Fcclk < 20000000
  166.     MAMTIM = 1;
  167. #else
  168. #if Fcclk < 40000000
  169.     MAMTIM = 2;
  170. #else
  171.     MAMTIM = 3;
  172. #endif
  173. #endif
  174.     MAMCR = 2;
  175.     
  176.     /* 初始化VIC */
  177.     /* initialize VIC*/
  178.     VICIntEnClr = 0xffffffff;
  179.     VICVectAddr = 0;
  180.     VICIntSelect = 0;
  181.     /* 添加自己的代码 */
  182.     /* Add your codes here */
  183. }
  184. /*********************************************************************************************************
  185. **                  以下为一些与系统相关的库函数的实现
  186. **                  具体作用请ads的参考编译器与库函数手册
  187. **                  用户可以根据自己的要求修改        
  188. ********************************************************************************************************/
  189. /*********************************************************************************************************
  190. **                  The implementations for some library functions
  191. **                  For more details, please refer to the ADS compiler handbook and The library 
  192. ** function manual
  193. **                  User could change it as needed       
  194. ********************************************************************************************************/
  195. #include <rt_sys.h>
  196. #include <stdio.h>
  197. #pragma import(__use_no_semihosting_swi)
  198.         int __rt_div0(int a)
  199. {
  200.     a = a;
  201.     return 0;
  202. }
  203.         int fputc(int ch,FILE *f)
  204. {
  205.     ch = ch;
  206.     f = f;
  207.     return 0;
  208. }
  209.     int fgetc(FILE *f)
  210. {
  211.     f = f;
  212.     return 0;
  213. }
  214.         int _sys_close(FILEHANDLE fh)
  215. {
  216.     fh = fh;
  217.     return 0;
  218. }
  219.         int _sys_write(FILEHANDLE fh, const unsigned char * buf,
  220.                       unsigned len, int mode)
  221. {
  222.     fh = fh;
  223.     buf = buf;
  224.     len =len;
  225.     mode = mode;
  226.     return 0;
  227. }
  228.         int _sys_read(FILEHANDLE fh, unsigned char * buf,
  229.                      unsigned len, int mode)
  230. {
  231.     fh = fh;
  232.     buf = buf;
  233.     len =len;
  234.     mode = mode;
  235.     
  236.     return 0;
  237. }
  238.        void _ttywrch(int ch)
  239. {
  240.     ch = ch;
  241. }
  242.         int _sys_istty(FILEHANDLE fh)
  243. {
  244.     fh = fh;
  245.     return 0;
  246. }
  247.         int _sys_seek(FILEHANDLE fh, long pos)
  248. {
  249.     fh = fh;
  250.     return 0;
  251. }
  252.         int _sys_ensure(FILEHANDLE fh)
  253. {
  254.     fh = fh;
  255.     return 0;
  256. }
  257.         long _sys_flen(FILEHANDLE fh)
  258. {
  259.     fh = fh;
  260.     return 0;
  261. }
  262.        int _sys_tmpnam(char * name, int sig, unsigned maxlen)
  263. {
  264.     name = name;
  265.     sig = sig;
  266.     maxlen = maxlen;
  267.     return 0;
  268. }
  269.         void _sys_exit(int returncode)
  270. {
  271.     returncode = returncode;
  272. }
  273.         char *_sys_command_string(char * cmd, int len)
  274. {
  275.     cmd = cmd;
  276.     len = len;
  277.     return 0;
  278. }
  279. /*********************************************************************************************************
  280. **                            End Of File
  281. ********************************************************************************************************/