target.c
上传用户:sdaoma
上传日期:2013-08-07
资源大小:3838k
文件大小:14k
源码类别:

GPS编程

开发平台:

C/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 I2c_Handler(void);
  150. extern void UART1_Handler(void);
  151.     VICIntEnClr = 0xffffffff;
  152.     VICDefVectAddr = (uint32)IRQ_Handler;
  153.     
  154.     VICVectAddr12 = (uint32)I2c_Handler;
  155.     VICVectCntl12 = (0x20 | 9);
  156.     VICVectAddr0 = (uint32)Timer0_Handler;
  157.     VICVectCntl0 = (0x20 | 0x04);
  158.     VICIntEnable = 1 << 4;
  159.     
  160.     VICVectAddr14 = (uint32)UART1_Handler;
  161.     VICVectCntl14 = (0x20 | 0x07);
  162.     VICIntEnable = 1 << 7;
  163.  
  164.  }
  165.  
  166. /*********************************************************************************************************
  167. ** Function name: TargetInit
  168. **
  169. ** Descriptions: Initialize the target board; it is called in a necessary place, change it as 
  170. ** needed
  171. **
  172. ** input parameters: None
  173. ** Returned value: None
  174. **         
  175. ** Used global variables: None
  176. ** Calling modules: None
  177. **
  178. ** Created by: Chenmingji
  179. ** Created Date: 2004/02/02
  180. **-------------------------------------------------------------------------------------------------------
  181. ** Modified by:
  182. ** Modified date:
  183. **------------------------------------------------------------------------------------------------------
  184. ********************************************************************************************************/
  185.         void TargetInit(void)
  186. {
  187.     OS_ENTER_CRITICAL();
  188.     
  189.     srand((uint32) TargetInit);
  190.     VICInit();
  191.     Timer0Init();
  192.     I2cInit(30000);
  193.     
  194.     // ADS7843控制I/O定义
  195.     IO2DIR = ADS7843_CS|ADS7843_DIN|ADS7843_DCLK; 
  196.     
  197.     OS_EXIT_CRITICAL();
  198. }
  199. /*********************************************************************************************************
  200. ** Function name: InitialiseUART0
  201. **
  202. ** Descriptions: Initialize the Uart0
  203. **
  204. ** input parameters: None
  205. ** Returned value: None
  206. **         
  207. ** Used global variables: None
  208. ** Calling modules: None
  209. **
  210. ** Created by: Chenmingji
  211. ** Created Date: 2004/02/02
  212. **-------------------------------------------------------------------------------------------------------
  213. ** Modified by:
  214. ** Modified date:
  215. **------------------------------------------------------------------------------------------------------
  216. ********************************************************************************************************/
  217.         void InitialiseUART0(uint32 bps)
  218. {  
  219.     uint16 Fdiv;
  220.     
  221.     PINSEL0 = (PINSEL0 & 0xFFFFFFF0) | 0x05;    /* Select the pins for Uart 选择管脚为UART0 */
  222.     U0LCR = 0x80;                               /* Enable to access the frequenc regecter 允许访问分频因子寄存器 */
  223.     Fdiv = (Fpclk / 16) / bps;                  /* Set the baudrate设置波特率 */
  224.     U0DLM = Fdiv / 256;
  225. U0DLL = Fdiv % 256;
  226.     U0LCR = 0x03;                               /* Disable to access the frequenc regecter 禁止访问分频因子寄存器 */
  227.                                                 /* set to 8,1,n 且设置为8,1,n */
  228. U0IER = 0x00;                               /* Disable interrupt禁止中断 */
  229.     U0FCR = 0x00;                               /* initial FIFO 初始化FIFO */
  230. extern  void Reset(void);
  231. volatile uint32  *RAM_Vectors;
  232. volatile uint32  *CODE_Vectors;
  233. /*********************************************************************************************************
  234. ** Function name: TargetResetInit
  235. **
  236. ** Descriptions: Initialize the target 
  237. **
  238. ** input parameters: None
  239. ** Returned value: None
  240. **         
  241. ** Used global variables: None
  242. ** Calling modules: None
  243. **
  244. ** Created by: Chenmingji
  245. ** Created Date: 2004/02/02
  246. **-------------------------------------------------------------------------------------------------------
  247. ** Modified by:
  248. ** Modified date:
  249. **------------------------------------------------------------------------------------------------------
  250. ********************************************************************************************************/
  251. void TargetResetInit(void)
  252. {  
  253.    int  i;
  254. /*   
  255. #ifdef __DEBUG    
  256.     MEMMAP = 0x3;                   //remap
  257. #endif
  258. #ifdef __OUT_CHIP    
  259.     MEMMAP = 0x3;                   //remap
  260. #endif
  261. #ifdef __IN_CHIP    
  262.     MEMMAP = 0x1;                   //remap
  263. #endif
  264. */
  265.     RAM_Vectors = (void*)0x40000000;
  266.     CODE_Vectors = (void*)Reset;
  267.     for(i=0; i<16; i++) 
  268.     {  *RAM_Vectors = *CODE_Vectors;
  269.        RAM_Vectors++;
  270.        CODE_Vectors++;       
  271.     }
  272.     MEMMAP = 0x2;
  273.     
  274. /* 设置系统各部分时钟 */
  275. /* Set system timers for each component */
  276.     PLLCON = 1;
  277. #if (Fpclk / (Fcclk / 4)) == 1
  278.     VPBDIV = 0;
  279. #endif
  280. #if (Fpclk / (Fcclk / 4)) == 2
  281.     VPBDIV = 2;
  282. #endif
  283. #if (Fpclk / (Fcclk / 4)) == 4
  284.     VPBDIV = 1;
  285. #endif
  286. #if (Fcco / Fcclk) == 2
  287.     PLLCFG = ((Fcclk / Fosc) - 1) | (0 << 5);
  288. #endif
  289. #if (Fcco / Fcclk) == 4
  290.     PLLCFG = ((Fcclk / Fosc) - 1) | (1 << 5);
  291. #endif
  292. #if (Fcco / Fcclk) == 8
  293.     PLLCFG = ((Fcclk / Fosc) - 1) | (2 << 5);
  294. #endif
  295. #if (Fcco / Fcclk) == 16
  296.     PLLCFG = ((Fcclk / Fosc) - 1) | (3 << 5);
  297. #endif
  298.     PLLFEED = 0xaa;
  299.     PLLFEED = 0x55;
  300.     while((PLLSTAT & (1 << 10)) == 0);
  301.     PLLCON = 3;
  302.     PLLFEED = 0xaa;
  303.     PLLFEED = 0x55;
  304. /* 设置存储器加速模块 */
  305. /* Set memory accelerater module*/
  306.     MAMCR = 0;
  307. #if Fcclk < 20000000
  308.     MAMTIM = 1;
  309. #else
  310. #if Fcclk < 40000000
  311.     MAMTIM = 2;
  312. #else
  313.     MAMTIM = 3;
  314. #endif
  315. #endif
  316.     MAMCR = 2;
  317. /* 设置串行口 */
  318. /* initialize UART*/
  319.     InitialiseUART0(115200);
  320. /* 设置实时时钟 */
  321. /* initialize RTC*/
  322.     CCR = 1;
  323.     PREINT = Fpclk / 32768 - 1;
  324.     PREFRAC = Fpclk - (Fpclk / 32768) * 32768;
  325.     YEAR = 2003;
  326.     MONTH = 6;
  327.     DOM = 2;
  328. /* initialize VIC*/
  329.     VICIntEnClr = 0xffffffff;
  330.     VICVectAddr = 0;
  331.     VICIntSelect = 0;
  332.     T0IR = 0xffffffff;
  333.     T0TCR = 0X02;
  334. }
  335. /*********************************************************************************************************
  336. **                  以下为一些与系统相关的库函数的实现
  337. **                  具体作用请ads的参考编译器与库函数手册
  338. **                  用户可以根据自己的要求修改        
  339. ********************************************************************************************************/
  340. /*********************************************************************************************************
  341. **                  The implementations for some library functions
  342. **                  For more details, please refer to the ADS compiler handbook and The library 
  343. ** function manual
  344. **                  User could change it as needed       
  345. ********************************************************************************************************/
  346. #include "rt_sys.h"
  347. #include "stdio.h"
  348. //#pragma import(__use_no_semihosting_swi)
  349. #pragma import(__use_two_region_memory)
  350.  
  351. /*        int __rt_div0(int a)
  352. {
  353.     a = a;
  354.     return 0;
  355. }
  356.         int fputc(int ch,FILE *f)
  357. {
  358.     ch = ch;
  359.     f = f;
  360.     return 0;
  361. }
  362.     int fgetc(FILE *f)
  363. {
  364.     f = f;
  365.     return 0;
  366. }
  367.         int _sys_close(FILEHANDLE fh)
  368. {
  369.     fh = fh;
  370.     return 0;
  371. }
  372.         int _sys_write(FILEHANDLE fh, const unsigned char * buf,
  373.                       unsigned len, int mode)
  374. {
  375.     fh = fh;
  376.     buf = buf;
  377.     len =len;
  378.     mode = mode;
  379.     return 0;
  380. }
  381.         int _sys_read(FILEHANDLE fh, unsigned char * buf,
  382.                      unsigned len, int mode)
  383. {
  384.     fh = fh;
  385.     buf = buf;
  386.     len =len;
  387.     mode = mode;
  388.     
  389.     return 0;
  390. }
  391.        void _ttywrch(int ch)
  392. {
  393.     ch = ch;
  394. }
  395.         int _sys_istty(FILEHANDLE fh)
  396. {
  397.     fh = fh;
  398.     return 0;
  399. }
  400.         int _sys_seek(FILEHANDLE fh, long pos)
  401. {
  402.     fh = fh;
  403.     return 0;
  404. }
  405.         int _sys_ensure(FILEHANDLE fh)
  406. {
  407.     fh = fh;
  408.     return 0;
  409. }
  410.         long _sys_flen(FILEHANDLE fh)
  411. {
  412.     fh = fh;
  413.     return 0;
  414. }
  415.        int _sys_tmpnam(char * name, int sig, unsigned maxlen)
  416. {
  417.     name = name;
  418.     sig = sig;
  419.     maxlen = maxlen;
  420.     return 0;
  421. }
  422.         void _sys_exit(int returncode)
  423. {
  424.     returncode = returncode;
  425. }
  426.         char *_sys_command_string(char * cmd, int len)
  427. {
  428.     cmd = cmd;
  429.     len = len;
  430.     return 0;
  431. }
  432. */
  433. /*********************************************************************************************************
  434. **                            End Of File
  435. ********************************************************************************************************/