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

微处理器开发

开发平台:

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: main.c
  8. ** Last modified Date:  2004-09-16
  9. ** Last Version: 1.0
  10. ** Descriptions: The main() function example template
  11. **
  12. **------------------------------------------------------------------------------------------------------
  13. ** Created by: Chenmingji
  14. ** Created date: 2004-09-16
  15. ** Version: 1.0
  16. ** Descriptions: The original version
  17. **
  18. **------------------------------------------------------------------------------------------------------
  19. ** Modified by:
  20. ** Modified date:
  21. ** Version:
  22. ** Descriptions:
  23. **
  24. ********************************************************************************************************/
  25. #include "config.h"
  26. #include "string.h"
  27. #include "uart.h" /* 串口操作相关函数 */
  28. #include "sdconfig.h"
  29. #include "sddriver.h" /* SD卡操作的相关函数 */
  30. #define CMD_SD_INIT    0x00 /* SD卡初始化卡命令  */
  31. #define CMD_SD_READ        0x01 /* SD卡读命令        */
  32. #define CMD_SD_WRITE       0x02 /* SD卡写命令        */
  33. #define CMD_SD_ERASE    0x03 /* SD卡擦除命令      */
  34. #define CMD_DATA_TRANS    0x04 /* 将sd_buf中的数据发送到PC机 */
  35. #define CMD_DATA_RECV    0x05 /* 接收来自串口的数据,并放入sd_buf中 */
  36.  
  37. /* SD卡读写缓冲区,比SD卡一个块大8字节 */  
  38. uint8 sd_buf[520];
  39. int main (void)
  40. {
  41. uint32 bufaddr;
  42. uint32 blockaddr;
  43. uint32 blocknum;
  44. Uart_Initialize(115200); /* 初始化串口 */
  45.     while(1)                               /* 等待串口中断 */
  46.     { 
  47.      if(rcv_new == 1) /* 如果串口收到数据 */
  48.      { 
  49.      switch(rcv_buf[0])
  50.      {
  51.      case CMD_SD_INIT: rcv_buf[1] = SD_Initialize(); /* 初始化SD卡 */
  52.      break; 
  53.     
  54.      case CMD_SD_READ:
  55.       blockaddr = (rcv_buf[1] << 24) + (rcv_buf[2] << 16) + /* 计算块地址 */
  56.       (rcv_buf[3] << 8) + rcv_buf[4];
  57.       rcv_buf[1] = SD_ReadBlock(blockaddr, sd_buf);   /* SD卡单块读 */ 
  58.      break;
  59.            
  60.      case CMD_SD_WRITE:  
  61.       blockaddr = (rcv_buf[1] << 24) + (rcv_buf[2] << 16) + 
  62.       (rcv_buf[3] << 8) + rcv_buf[4];
  63.       rcv_buf[1] = SD_WriteBlock(blockaddr, sd_buf); /* SD 卡单块写 */
  64.      break;
  65.     
  66.      case CMD_SD_ERASE:  
  67.       blockaddr = (rcv_buf[1] << 24) + (rcv_buf[2] << 16) + 
  68.       (rcv_buf[3] << 8) + rcv_buf[4];
  69.       blocknum  = (rcv_buf[5] << 16) + (rcv_buf[6] << 8) +
  70.         (rcv_buf[7]);
  71.       rcv_buf[1] = SD_EraseBlock(blockaddr, blocknum); /* SD 卡擦除 */
  72.      break;
  73.    
  74.      case CMD_DATA_RECV:  
  75.       bufaddr = (rcv_buf[1] << 8) + rcv_buf[2]; /* 计算缓冲区地址 */
  76.       memcpy(sd_buf + bufaddr, &rcv_buf[3], 5); /* 收到数据放入sd_buf */
  77.      break;
  78.     
  79.      case CMD_DATA_TRANS: 
  80.       bufaddr = (rcv_buf[1] << 8) + rcv_buf[2]; /* 计算缓冲区地址 */ 
  81.       memcpy(&rcv_buf[1], sd_buf + bufaddr, 7); /* sd_buf数据放入rcv_buf */
  82.      break;  
  83.     
  84.      default: break;
  85.      }
  86.     
  87.          UART0_SendBuf(); /* 发送 rcv_buf */     
  88.          rcv_new = 0;   /* 接收标志清0  */
  89.       }
  90. }
  91.    
  92. return 0;
  93. }
  94. /*********************************************************************************************************
  95. **                            End Of File
  96. ********************************************************************************************************/