target.c
上传用户:zddz2006
上传日期:2020-12-03
资源大小:261k
文件大小:14k
源码类别:

中间件编程

开发平台:

Visual C++

  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 LPC2200 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_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: Timer0_Exception
  79. **
  80. ** Descriptions: Timer0 interrupt service function
  81. **
  82. ** input parameters: None
  83. ** Returned value: None
  84. **         
  85. ** Used global variables: None
  86. ** Calling modules: None
  87. **
  88. ** Created by: Chenmingji
  89. ** Created Date: 2004/02/02
  90. **-------------------------------------------------------------------------------------------------------
  91. ** Modified by:
  92. ** Modified date:
  93. **------------------------------------------------------------------------------------------------------
  94. ********************************************************************************************************/
  95.         void Timer0_Exception(void)
  96. {
  97.     T0IR = 0x01;
  98.     VICVectAddr = 0;            //interrupt close 通知中断控制器中断结束
  99.     OSTimeTick();
  100. }
  101. /*********************************************************************************************************
  102. ** Function name: Timer0Init
  103. **
  104. ** Descriptions: Initialize the Time0
  105. **
  106. ** input parameters: None
  107. ** Returned value: None
  108. **         
  109. ** Used global variables: None
  110. ** Calling modules: None
  111. **
  112. ** Created by: Chenmingji
  113. ** Created Date: 2004/02/02
  114. **-------------------------------------------------------------------------------------------------------
  115. ** Modified by:
  116. ** Modified date:
  117. **------------------------------------------------------------------------------------------------------
  118. ********************************************************************************************************/
  119.         void Timer0Init(void)
  120. {
  121.     T0IR = 0xffffffff;
  122.     T0TC = 0;
  123.     T0TCR = 0x01;
  124.     T0MCR = 0x03;
  125.     T0MR0 = (Fpclk / OS_TICKS_PER_SEC);
  126.  }
  127. /*********************************************************************************************************
  128. ** Function name: VICInit
  129. **
  130. ** Descriptions: Initialize the Interrupt Vevtor Controller
  131. **
  132. ** input parameters: None
  133. ** Returned value: None
  134. **         
  135. ** Used global variables: None
  136. ** Calling modules: None
  137. **
  138. ** Created by: Chenmingji
  139. ** Created Date: 2004/02/02
  140. **-------------------------------------------------------------------------------------------------------
  141. ** Modified by:
  142. ** Modified date:
  143. **------------------------------------------------------------------------------------------------------
  144. ********************************************************************************************************/
  145.         void VICInit(void)
  146. {
  147.     extern void IRQ_Handler(void);
  148.     extern void Timer0_Handler(void);
  149.     extern  void  UART1_Handler(void);
  150.     VICIntEnClr = 0xffffffff;
  151.     VICDefVectAddr = (uint32)IRQ_Handler;
  152.     VICVectAddr0 = (uint32)Timer0_Handler;
  153.     VICVectCntl0 = (0x20 | 0x04);
  154.     VICIntEnable = 1 << 4;    
  155.     
  156.     VICVectAddr14 = (uint32)UART1_Handler;
  157.     VICVectCntl14 = (0x20 | 0x07);
  158.     VICIntEnable = 1 << 7;
  159.  }
  160. /*********************************************************************************************************
  161. ** Function name: TargetInit
  162. **
  163. ** Descriptions: Initialize the target board; it is called in a necessary place, change it as 
  164. ** needed
  165. **
  166. ** input parameters: None
  167. ** Returned value: None
  168. **         
  169. ** Used global variables: None
  170. ** Calling modules: None
  171. **
  172. ** Created by: Chenmingji
  173. ** Created Date: 2004/02/02
  174. **-------------------------------------------------------------------------------------------------------
  175. ** Modified by:
  176. ** Modified date:
  177. **------------------------------------------------------------------------------------------------------
  178. ********************************************************************************************************/
  179.         void TargetInit(void)
  180. {
  181.     OS_ENTER_CRITICAL();
  182.     srand((uint32) TargetInit);
  183.     VICInit();
  184.     Timer0Init();
  185.     OS_EXIT_CRITICAL();
  186. }
  187. /*********************************************************************************************************
  188. ** Function name: InitialiseUART0
  189. **
  190. ** Descriptions: Initialize the Uart0
  191. **
  192. ** input parameters: None
  193. ** Returned value: None
  194. **         
  195. ** Used global variables: None
  196. ** Calling modules: None
  197. **
  198. ** Created by: Chenmingji
  199. ** Created Date: 2004/02/02
  200. **-------------------------------------------------------------------------------------------------------
  201. ** Modified by:
  202. ** Modified date:
  203. **------------------------------------------------------------------------------------------------------
  204. ********************************************************************************************************/
  205.         void InitialiseUART0(uint32 bps)
  206. {  
  207.     uint16 Fdiv;
  208.     
  209.     PINSEL0 = (PINSEL0 & 0xfffffff0) | 0x05;    /* Select the pins for Uart 选择管脚为UART0 */
  210.     U0LCR = 0x80;                               /* Enable to access the frequenc regecter 允许访问分频因子寄存器 */
  211.     Fdiv = (Fpclk / 16) / bps;                  /* Set the baudrate设置波特率 */
  212.     U0DLM = Fdiv / 256;
  213. U0DLL = Fdiv % 256;
  214.     U0LCR = 0x03;                               /* Disable to access the frequenc regecter 禁止访问分频因子寄存器 */
  215.                                                 /* set to 8,1,n 且设置为8,1,n */
  216. U0IER = 0x00;                               /* Disable interrupt禁止中断 */
  217.     U0FCR = 0x00;                               /* initial FIFO 初始化FIFO */
  218. /*********************************************************************************************************
  219. ** Function name: TargetResetInit
  220. **
  221. ** Descriptions: Initialize the target 
  222. **
  223. ** input parameters: None
  224. ** Returned value: None
  225. **         
  226. ** Used global variables: None
  227. ** Calling modules: None
  228. **
  229. ** Created by: Chenmingji
  230. ** Created Date: 2004/02/02
  231. **-------------------------------------------------------------------------------------------------------
  232. ** Modified by:
  233. ** Modified date:
  234. **------------------------------------------------------------------------------------------------------
  235. ********************************************************************************************************/
  236.         void TargetResetInit(void)
  237. {
  238. #ifdef __DEBUG    
  239.     MEMMAP = 0x3;                   //remap
  240. #endif
  241. #ifdef __OUT_CHIP    
  242.     MEMMAP = 0x3;                   //remap
  243. #endif
  244. #ifdef __IN_CHIP    
  245.     MEMMAP = 0x1;                   //remap
  246. #endif
  247.     PINSEL0 = (PINSEL0 & 0xFFFF0000) | 0x05 | 0x50;
  248. /* 设置系统各部分时钟 */
  249. /* Set system timers for each component */
  250.     PLLCON = 1;
  251. #if (Fpclk / (Fcclk / 4)) == 1
  252.     VPBDIV = 0;
  253. #endif
  254. #if (Fpclk / (Fcclk / 4)) == 2
  255.     VPBDIV = 2;
  256. #endif
  257. #if (Fpclk / (Fcclk / 4)) == 4
  258.     VPBDIV = 1;
  259. #endif
  260. #if (Fcco / Fcclk) == 2
  261.     PLLCFG = ((Fcclk / Fosc) - 1) | (0 << 5);
  262. #endif
  263. #if (Fcco / Fcclk) == 4
  264.     PLLCFG = ((Fcclk / Fosc) - 1) | (1 << 5);
  265. #endif
  266. #if (Fcco / Fcclk) == 8
  267.     PLLCFG = ((Fcclk / Fosc) - 1) | (2 << 5);
  268. #endif
  269. #if (Fcco / Fcclk) == 16
  270.     PLLCFG = ((Fcclk / Fosc) - 1) | (3 << 5);
  271. #endif
  272.     PLLFEED = 0xaa;
  273.     PLLFEED = 0x55;
  274.     while((PLLSTAT & (1 << 10)) == 0);
  275.     PLLCON = 3;
  276.     PLLFEED = 0xaa;
  277.     PLLFEED = 0x55;
  278. /* 设置存储器加速模块 */
  279. /* Set memory accelerater module*/
  280.     MAMCR = 0;
  281. #if Fcclk < 20000000
  282.     MAMTIM = 1;
  283. #else
  284. #if Fcclk < 40000000
  285.     MAMTIM = 2;
  286. #else
  287.     MAMTIM = 3;
  288. #endif
  289. #endif
  290.     MAMCR = 2;
  291. /* 设置串行口 */
  292. /* initialize UART*/
  293.     InitialiseUART0(115200);
  294. /* 设置实时时钟 */
  295. /* initialize RTC*/
  296.     CCR = 1;
  297.     PREINT = Fpclk / 32768 - 1;
  298.     PREFRAC = Fpclk - (Fpclk / 32768) * 32768;
  299.     YEAR = 2003;
  300.     MONTH = 6;
  301.     DOM = 2;
  302. /* initialize VIC*/
  303.     VICIntEnClr = 0xffffffff;
  304.     VICVectAddr = 0;
  305.     VICIntSelect = 0;
  306.     T0IR = 0xffffffff;
  307.     T0TCR = 0X02;
  308. }
  309. /*********************************************************************************************************
  310. **                  以下为一些与系统相关的库函数的实现
  311. **                  具体作用请ads的参考编译器与库函数手册
  312. **                  用户可以根据自己的要求修改        
  313. ********************************************************************************************************/
  314. /*********************************************************************************************************
  315. **                  The implementations for some library functions
  316. **                  For more details, please refer to the ADS compiler handbook and The library 
  317. ** function manual
  318. **                  User could change it as needed       
  319. ********************************************************************************************************/
  320. #include "rt_sys.h"
  321. #include "stdio.h"
  322. #pragma import(__use_no_semihosting_swi)
  323. #pragma import(__use_two_region_memory)
  324.  
  325.         int __rt_div0(int a)
  326. {
  327.     a = a;
  328.     return 0;
  329. }
  330.         int fputc(int ch,FILE *f)
  331. {
  332.     ch = ch;
  333.     f = f;
  334.     return 0;
  335. }
  336.     int fgetc(FILE *f)
  337. {
  338.     f = f;
  339.     return 0;
  340. }
  341.         int _sys_close(FILEHANDLE fh)
  342. {
  343.     fh = fh;
  344.     return 0;
  345. }
  346.         int _sys_write(FILEHANDLE fh, const unsigned char * buf,
  347.                       unsigned len, int mode)
  348. {
  349.     fh = fh;
  350.     buf = buf;
  351.     len =len;
  352.     mode = mode;
  353.     return 0;
  354. }
  355.         int _sys_read(FILEHANDLE fh, unsigned char * buf,
  356.                      unsigned len, int mode)
  357. {
  358.     fh = fh;
  359.     buf = buf;
  360.     len =len;
  361.     mode = mode;
  362.     
  363.     return 0;
  364. }
  365.        void _ttywrch(int ch)
  366. {
  367.     ch = ch;
  368. }
  369.         int _sys_istty(FILEHANDLE fh)
  370. {
  371.     fh = fh;
  372.     return 0;
  373. }
  374.         int _sys_seek(FILEHANDLE fh, long pos)
  375. {
  376.     fh = fh;
  377.     return 0;
  378. }
  379.         int _sys_ensure(FILEHANDLE fh)
  380. {
  381.     fh = fh;
  382.     return 0;
  383. }
  384.         long _sys_flen(FILEHANDLE fh)
  385. {
  386.     fh = fh;
  387.     return 0;
  388. }
  389.        int _sys_tmpnam(char * name, int sig, unsigned maxlen)
  390. {
  391.     name = name;
  392.     sig = sig;
  393.     maxlen = maxlen;
  394.     return 0;
  395. }
  396.         void _sys_exit(int returncode)
  397. {
  398.     returncode = returncode;
  399. }
  400.         char *_sys_command_string(char * cmd, int len)
  401. {
  402.     cmd = cmd;
  403.     len = len;
  404.     return 0;
  405. }
  406. /*********************************************************************************************************
  407. **                            End Of File
  408. ********************************************************************************************************/