找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1706|回复: 0
打印 上一主题 下一主题
收起左侧

STM32 CH573程序例程分享

[复制链接]
跳转到指定楼层
楼主
ID:614682 发表于 2019-9-22 10:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32 CH573例程完整

单片机源程序如下:
  1. /***********************************************************************************
  2. CH375并行数据口:PF0~PF7 测试OK
  3. 控制端口:A0:PA8          CS:PA9          RD:PA10                WR:PC0  INT:PA12
  4. INT:复位完成后请求中断输出,低电平有效
  5. ACT#:完成USB配置后输出低电平,未配置的情况下输出高电平
  6. 复位完成后:25RST:低电平    26RST#:高电平            TXD:低电平并口输出
  7. INT#:复位完成后,为中断请求输出
  8. 检查错误:WR引脚一直为高电平,采用3.3V供电。测试成功。
  9. ***********************************************************************************/
  10. #include <stm32f10x_lib.h>
  11. #include "Nokia5110.h"
  12. #include "ILI9325.h"
  13. #include "W25X16.h"
  14. #include "ch375.h"
  15. #include "vs1003.h"
  16. #include "znfat.h"
  17. /*****************C语言深度解剖******************************/
  18. typedef struct weather
  19. {
  20.           char i;
  21.           int h[];
  22. }hell;
  23. int *s=(int*)0x80000004;
  24. int a[3];
  25. int b=sizeof(&a[0]);//   sizeof(a)=12  sizeof(&a)=4
  26.                    //   sizeof(a[0])=4 sizeof(&a[0])=4
  27. /*******
  28. #define  x   3
  29. #define  y   2*x
  30. #undef   x
  31. #define  x   2
  32. int z=y;
  33. #define sqr[n]  '#n'
  34. #define xname[8]  x##8//xname[8]就会被写成x8
  35. int *p;
  36. char *m;
  37. int q=sizeof(p);
  38. int q1=sizeof(unsigned char);
  39. int aa[5]={1,2,3,4,5};
  40. int *ptr= (int*)(&aa+1);
  41. ***************/
  42. /*****************C语言深度解剖******************************/
  43. /* Private typedef -----------------------------------------------------------*/
  44. /* Private define ------------------------------------------------------------*/
  45. /* Private macro -----------------data--------------------------------------------*/
  46. /* Private variables ---------------------------------------------------------*/
  47. GPIO_InitTypeDef GPIO_InitStructure;
  48. EXTI_InitTypeDef EXTI_InitStructure;
  49. USART_InitTypeDef USART_InitStructure;
  50. ErrorStatus HSEStartUpStatus;

  51. //=============================W25X16==========================================
  52. #define  FLASH_WriteAddress     0x00000
  53. #define  FLASH_ReadAddress      FLASH_WriteAddress
  54. #define  FLASH_SectorToErase    FLASH_WriteAddress
  55. //#define  sFLASH_ID              0xEF3015          //W25X16
  56. #define  sFLASH_ID              0xEF4015          //W25Q16

  57. u8  ReturnValue;
  58. u32 DeviceID = 0;
  59. u32 FlashID = 0;
  60. //=========================================================================
  61. struct znFAT_Init_Arg Init_Arg_UDISK;        //初始化FAT结构实体        
  62. struct znFAT_Init_Arg *pArg;           //初始化参数结构体实体
  63. struct FileInfoStruct  FileInfo; //文件信息结构实体
  64. extern struct FileInfoStruct  FileInfoHZK;//idata
  65. extern UINT8 znFAT_Buffer[512];
  66. //extern u32  conformflag=0;
  67. struct directory *rDir;
  68. u16 temp;
  69. u8 conformflag;
  70. u32 currentfile=0;
  71. unsigned char next=0;
  72. u8 fileBuf[512];
  73. extern u16 time;
  74. extern u32 lenth;
  75. extern u16 f_kbps;
  76. //static u16 playtime=0;
  77. u16 temp=0;
  78. //float course=0;
  79. int L;
  80. u32 Statusflag;
  81. u32 num;
  82. u32 FileSize;
  83. u8 VOL_VALUE=0x25; //读取数据长度
  84. u8 volup=0;
  85. unsigned char Dev_No=0;
  86. /* Private function prototypes -----------------------------------------------*/
  87. void RCC_Configuration(void);
  88. void GPIO_Configuration(void);
  89. void NVIC_Configuration(void);
  90. void EXTI_Configuration(void);
  91. void SPI_Configuration(void);
  92. void EXTI9_5_IRQHandler(void);
  93. void Show_File_Message(void);
  94. //extern UINT8 FAT32Buffer[512];
  95. extern void Delay(vu32 nCount);
  96. /* Private functions ---------------------------------------------------------*/
  97. u8 machtype(u8 *type);
  98. u8  t[14] = "HZLIB";
  99. u16 ii;
  100. int main(void)
  101. {
  102.         #ifdef DEBUG
  103.           debug();
  104.         #endif

  105.         RCC_Configuration();   
  106.         GPIO_Configuration();  
  107.         LCD_GPIO_Configuration();
  108.         EXTI_Configuration();  

  109.         NVIC_Configuration();
  110.         SPI_Configuration();

  111.         SPI_FLASH_Init();
  112.     ili9320_Initializtion();//液晶初始化
  113.     ili9320_Clear(Blue);
  114.         DeviceID = SPI_FLASH_ReadDeviceID();
  115.     FlashID = SPI_FLASH_ReadID();
  116.     if (FlashID == sFLASH_ID)  
  117.     {
  118.                    ReturnValue = 1;
  119.         }
  120.         ili9320_PutChar(40,0,'U',Black,Blue);
  121.         Lcd_WriteChineseString(3,0,Black,Blue,"盘读写实验");
  122.         LCD_ShowNum(0,200,123456,Black,Blue);
  123.         ili9320_PutString(40,16,t,Black,Blue);

  124.   //VS1003Reset();
  125.   //Sintest(120);
  126.     do
  127.     {
  128.         Statusflag = CH375Init( );  /* 初始化CH375 ,成功返回0*/
  129.     }
  130.     while(Statusflag);   

  131.     /*********************等待U盘插入******************************************/
  132.     while ( WaitInterrupt( ) != USB_INT_CONNECT );  /* U盘没有连接或者已经拔出 或等待U盘连接*/
  133.     Delay(320000);        /* 等待U盘进入正常工作状态*/
  134.     do
  135.     {
  136.         Statusflag = InitDisk( );  /* 初始化磁盘 ,成功返回0*/
  137.     }
  138.     while(Statusflag);
  139.    //LCD_Display(20,0,"ELAB MP3");
  140.    
  141.    /***************************************!FAT32OpenFile(&FileInfo, "\\test.txt",0)************************************/
  142.    pArg=&Init_Arg_UDISK;     //初始化参数结构体实体
  143.    Dev_No=UDISK;
  144.    znFAT_Init();    //初始化pArg
  145.    /**************************************************************************/
  146.    znFAT_Open_File(&FileInfoHZK, "\\HZLIB.bin",0,1);
  147.    Show_File_Message();               

  148.      //if(machtype("MP3")||machtype("WMA"))
  149.      
  150.    while(!znFAT_Open_File(&FileInfo, "\\*.mp3",num,num+1))        //打开U盘根目录下所有目录中的第n个
  151.    {  
  152.      //if(machtype("MP3"));
  153.        num++;
  154.    }
  155.          
  156.      while(1)
  157.      {
  158.      znFAT_Open_File(&FileInfo, "\\*.mp3",currentfile,num);
  159.      FileSize=FileInfo.FileSize;
  160.      //LCD_Display(0,1,FileInfo.FileName);
  161.                      //time=(FileSize/f_kbps)/125;//总时间
  162.                // LCD_Display_Time(2, 5, time);
  163.                // LCD_Write_Progress(2, 4,50); // 播放进度
  164.      //XDCS_L;
  165.      //VS1003_FlushBuffer();
  166.      znFAT_Read_FileX(&FileInfo,0,FileInfo.FileSize, VS1003SendDat);
  167.      //XDCS_H;
  168.     // LCD_Display(0,1,"              ");
  169.     // LCD_Display(0,2,"              ");
  170.      currentfile++;
  171.      //currentfile++;
  172.      //conformflag=1;
  173.   
  174.    if(currentfile>=num)
  175.     {
  176.      currentfile=0;
  177.     }
  178. }
  179. }

  180. /*******************************************************************************
  181. * Function Name  : RCC_Configuration
  182. * Description    : Configures the different system clocks.
  183. * Input          : None
  184. * Output         : None
  185. * Return         : None
  186. *******************************************************************************/
  187. void RCC_Configuration(void)
  188. {   
  189.   /* RCC system reset(for debug purpose) */
  190.   RCC_DeInit();

  191.   /* Enable HSE */
  192.   RCC_HSEConfig(RCC_HSE_ON);

  193.   /* Wait till HSE is ready */
  194.   HSEStartUpStatus = RCC_WaitForHSEStartUp();

  195.   if(HSEStartUpStatus == SUCCESS)
  196.   {
  197.     /* Enable Prefetch Buffer */
  198.     FLASH_PrefetchBufferCmd(FLASH_PrefetchBuffer_Enable);

  199.     /* Flash 2 wait state */
  200.     FLASH_SetLatency(FLASH_Latency_2);
  201.          
  202.     /* HCLK = SYSCLK */
  203.     RCC_HCLKConfig(RCC_SYSCLK_Div1);
  204.   
  205.     /* PCLK2 = HCLK */
  206.     RCC_PCLK2Config(RCC_HCLK_Div1);

  207.     /* PCLK1 = HCLK/2 */
  208.     RCC_PCLK1Config(RCC_HCLK_Div2);

  209.     /* PLLCLK = 8MHz * 9 = 72 MHz */
  210.     RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);

  211.     /* Enable PLL */
  212.     RCC_PLLCmd(ENABLE);

  213.     /* Wait till PLL is ready */
  214.     while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET)
  215.     {
  216.     }

  217.     /* Select PLL as system clock source */
  218.     RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);

  219.     /* Wait till PLL is used as system clock source */
  220.     while(RCC_GetSYSCLKSource() != 0x08)
  221.     {
  222.     }   
  223.   }
  224.   
  225. //  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIO_LCD, ENABLE);
  226.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIO_CH375_Data, ENABLE);
  227.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIO_CH375_CTL, ENABLE);
  228.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
  229. //  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIO_VS1003, ENABLE);
  230.   RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
  231.   RCC_APB2PeriphClockCmd( RCC_APB2Periph_SPI1, ENABLE);
  232.   RCC_APB1PeriphClockCmd( RCC_APB1Periph_SPI2, ENABLE);
  233. }
  234. /*******************************************************************************/
  235. void SPI_Configuration(void)
  236. {
  237.   SPI_InitTypeDef SPI_InitStructure;
  238.   /* SPI_MASTER configuration ------------------------------------------------*/
  239.   SPI_InitStructure.SPI_Direction = SPI_Direction_2Lines_FullDuplex;
  240.   SPI_InitStructure.SPI_Mode = SPI_Mode_Master;
  241.   SPI_InitStructure.SPI_DataSize = SPI_DataSize_8b;
  242.   SPI_InitStructure.SPI_CPOL = SPI_CPOL_High;//时钟悬空高
  243.   SPI_InitStructure.SPI_CPHA = SPI_CPHA_2Edge;//数据捕获于第二个时钟沿
  244.   SPI_InitStructure.SPI_NSS = SPI_NSS_Soft;//内部 NSS 信号有 SSI位控制
  245.   SPI_InitStructure.SPI_BaudRatePrescaler = SPI_BaudRatePrescaler_64;
  246.   SPI_InitStructure.SPI_FirstBit = SPI_FirstBit_MSB;//定义了用于 CRC值计算的多项式 7
  247.   SPI_InitStructure.SPI_CRCPolynomial = 7;//定义了用于 CRC值计算的多项式 7
  248.   SPI_Init(SPI2, &SPI_InitStructure);
  249.   
  250.   SPI_Cmd(SPI2, ENABLE);
  251. }
  252. /*******************************************************************************
  253. * Function Name  : GPIO_Configuration
  254. * Description    : Configures GPIOs used.
  255. * Input          : None
  256. * Output         : None
  257. * Return         : None
  258. *******************************************************************************/
  259. void GPIO_Configuration(void)
  260. {

  261. /*************************LCD端口的初始化**************************************/
  262. /*  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12;
  263.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  264.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  265.   GPIO_Init(GPIO_LCD, &GPIO_InitStructure);                //GPIOC
  266. */
  267. /*************************CH375端口的初始化***************************************/
  268.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8 | GPIO_Pin_9 | GPIO_Pin_10
  269.   |GPIO_Pin_11  ;
  270.    
  271.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  272.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  273.   GPIO_Init(GPIO_CH375_CTL, &GPIO_InitStructure);  //GPIOA

  274.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;               //wr
  275.    
  276.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  277.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  278.   GPIO_Init(GPIOC, &GPIO_InitStructure);  
  279.    
  280.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_12;      //   INT# 输入浮空
  281.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  282.   GPIO_Init(GPIO_CH375_CTL, &GPIO_InitStructure);
  283. /*************************VS1003端口的初始化***************************************/
  284. /*  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10 | GPIO_Pin_11 | GPIO_Pin_12;
  285.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
  286.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  287.   GPIO_Init(GPIO_VS1003, &GPIO_InitStructure);

  288.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13 | GPIO_Pin_14 | GPIO_Pin_15;
  289.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  290.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  291.   GPIO_Init(GPIO_VS1003, &GPIO_InitStructure);//GPIOB
  292.   
  293.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;      //   DREQ 输入上拉
  294.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  295.   GPIO_Init(GPIO_VS1003, &GPIO_InitStructure);*/  
  296. /*************************KEY端口的初始化***************************************/

  297. /*******************************************************************************
  298. * 引脚连接:       KEY1 next program   ...................   PB5
  299.                   KEY1 last program   ...................   PB6
  300.                   KEY1 turn up vol    ...................   PB7  
  301.                   KEY1 turn up vol    ...................   PB8                        
  302. *******************************************************************************/
  303.     /* Configure Key  GPIO Pin as input floating  */
  304.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7 | GPIO_Pin_8 ;
  305.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
  306.   GPIO_Init(GPIOB, &GPIO_InitStructure);
  307.   
  308.   GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource5);
  309.   GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource6);
  310.   GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource7);
  311.   GPIO_EXTILineConfig(GPIO_PortSourceGPIOB, GPIO_PinSource8);
  312. }
  313. /*******************************************************************************
  314. * Function Name  : NVIC_Configuration
  315. * Description    : Configures Vector Table base location.
  316. * Input          : None
  317. * Output         : None
  318. * Return         : None
  319. *******************************************************************************/
  320. void NVIC_Configuration(void)
  321. {
  322.   NVIC_InitTypeDef NVIC_InitStructure;
  323. /*************************外部中断NVIC通道设置*******************************/  
  324.   
  325.   /* Configure one bit for preemption priority */
  326.   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
  327.   
  328.   /* Enable the EXTI9_5 Interrupt */
  329. //  NVIC_InitStructure.NVIC_IRQChannel = EXTI9_5_IRQn;
  330.   NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
  331.   NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
  332.   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  333.   EXTI->PR = 0x0007FFFF;
  334.   NVIC_Init(&NVIC_InitStructure);
  335.   
  336. }
  337. /*******************************************************************************
  338. * Function Name  : EXTI_Configuration
  339. * Description    : Configures Vector Table base location.
  340. * Input          : None
  341. * Output         : None
  342. * Return         : None
  343. *******************************************************************************/
  344. void EXTI_Configuration(void)
  345. {
  346.   EXTI_DeInit();
  347.   EXTI_InitStructure.EXTI_Line= EXTI_Line5 | EXTI_Line6 | EXTI_Line7 | EXTI_Line8;
  348.   EXTI_InitStructure.EXTI_Mode= EXTI_Mode_Interrupt;
  349.   EXTI_InitStructure.EXTI_Trigger= EXTI_Trigger_Falling;
  350.   EXTI_InitStructure.EXTI_LineCmd= ENABLE;
  351.   EXTI_Init( &EXTI_InitStructure );
  352. }
  353. /*******************************************************************************/
  354. u8 machtype(u8 *type)
  355. {
  356.    u8 i;
  357.    for(i=9;i<12;i++)
  358.      if(FileInfo.FileName[i]==*type)
  359.        type++;
  360.      else
  361.        break;
  362.    if(i==12)
  363.      return 1;
  364.    else
  365.      return 0;
  366. }
  367. /*******************************************************************************
  368. * Function Name  : Delay
  369. * Description    : Inserts a delay time.
  370. * Input          : nCount: specifies the delay time length.
  371. * Output         : None
  372. * Return         : None
  373. *******************************************************************************/

  374. /*******************************************************************************/
  375. void Delay(vu32 nCount)
  376. {
  377.   for(; nCount != 0; nCount--);
  378. }

  379. /*******************************************************************************/
  380. #ifdef  DEBUG
  381. /*******************************************************************************
  382. * Function Name  : assert_failed
  383. * Description    : Reports the name of the source file and the source line number
  384. *                  where the assert_param error has occurred.
  385. * Input          : - file: pointer to the source file name
  386. *                  - line: assert_param error line source number
  387. * Output         : None
  388. * Return         : None
  389. *******************************************************************************/
  390. void assert_failed(u8* file, u32 line)
  391. {
  392.   /* User can add his own implementation to report the file name and line number,
  393.      ex: printf("Wrong parameters value: file %s on line %d\r\n", file, line) */

  394.   /* Infinite loop */
  395.   while (1)
  396.   {
  397.   }
  398. }
  399. #endif

  400. void Show_File_Message(void)
  401. {
  402.         
  403.    Lcd_WriteChineseString(0,2,Black,Blue,"文件名");
  404.    ili9320_PutString(80,32,FileInfoHZK.FileName,Black,Blue);
  405.    Lcd_WriteChineseString(0,3,Black,Blue,"文件开始簇号");
  406.    LCD_ShowNum(176,3*16,FileInfoHZK.FileStartCluster,Black,Blue);
  407.    Lcd_WriteChineseString(0,4,Black,Blue,"文件当前簇号");
  408.    LCD_ShowNum(176,4*16,FileInfoHZK.FileCurCluster,Black,Blue);
  409.    Lcd_WriteChineseString(0,5,Black,Blue,"文件的大小");
  410.    LCD_ShowNum(176,5*16,FileInfoHZK.FileSize,Black,Blue);
  411.    Lcd_WriteChineseString(0,6,Black,Blue,"文件的当前扇区");
  412.    LCD_ShowNum(176,6*16,FileInfoHZK.FileCurSector,Black,Blue);
  413.    Lcd_WriteChineseString(0,7,Black,Blue,"文件的下一簇号");
  414.    LCD_ShowNum(176,7*16,FileInfoHZK.FileSize,Black,Blue);
  415.    Lcd_WriteChineseString(0,8,Black,Blue,"文件在当前扇区中的位置");
  416.    LCD_ShowNum(176,8*16,FileInfoHZK.FileCurPos,Black,Blue);
  417.    Lcd_WriteChineseString(0,9,Black,Blue,"文件的当前偏移量");
  418.    LCD_ShowNum(176,9*16,FileInfoHZK.FileCurOffset,Black,Blue);
  419.    Lcd_WriteChineseString(0,10,Black,Blue,"文件的目录项所在的扇区");
  420.    LCD_ShowNum(176,10*16,FileInfoHZK.Rec_Sec,Black,Blue);
  421.    Lcd_WriteChineseString(0,11,Black,Blue,"文件目录项所在扇区位置");
  422.    LCD_ShowNum(176,11*16,FileInfoHZK.nRec,Black,Blue);
  423.    Lcd_WriteChineseString(0,12,Black,Blue,"文件属性");
  424.    LCD_ShowNum(176,12*16,FileInfoHZK.FileAttr,Black,Blue);
  425.    Lcd_WriteChineseString(0,13,Black,Blue,"文件的创建时间");
  426.    LCD_ShowNum(176,13*16,FileInfoHZK.FileCreateTime.hour,Black,Blue);
  427.    LCD_ShowNum(192,13*16,FileInfoHZK.FileCreateTime.min,Black,Blue);
  428.    LCD_ShowNum(208,13*16,FileInfoHZK.FileCreateTime.sec,Black,Blue);
  429.    Lcd_WriteChineseString(0,14,Black,Blue,"文件的创建日期");
  430.    LCD_ShowNum(176,14*16,FileInfoHZK.FileCreateDate.year,Black,Blue);
  431.    LCD_ShowNum(208,14*16,FileInfoHZK.FileCreateDate.month,Black,Blue);
  432.    LCD_ShowNum(224,14*16,FileInfoHZK.FileCreateDate.day,Black,Blue);
  433.    Lcd_WriteChineseString(0,15,Black,Blue,"文件的修改时间");
  434.    LCD_ShowNum(176,15*16,FileInfoHZK.FileMTime.hour,Black,Blue);
  435.    LCD_ShowNum(192,15*16,FileInfoHZK.FileMTime.min,Black,Blue);
  436.    LCD_ShowNum(208,15*16,FileInfoHZK.FileMTime.sec,Black,Blue);
  437.    Lcd_WriteChineseString(0,16,Black,Blue,"文件的修改日期");
  438.    LCD_ShowNum(176,16*16,FileInfoHZK.FileMDate.year,Black,Blue);
  439.    LCD_ShowNum(208,16*16,FileInfoHZK.FileMDate.month,Black,Blue);
  440.    LCD_ShowNum(224,16*16,FileInfoHZK.FileMDate.day,Black,Blue);
  441.    Lcd_WriteChineseString(0,17,Black,Blue,"文件的访问日期");
  442.    LCD_ShowNum(176,17*16,FileInfoHZK.FileADate.year,Black,Blue);
  443.    LCD_ShowNum(208,17*16,FileInfoHZK.FileADate.month,Black,Blue);
  444.    LCD_ShowNum(224,17*16,FileInfoHZK.FileADate.day,Black,Blue);        
  445. }
  446. /******************* (C) COPYRIGHT 2008 STMicroelectronics *****END OF FILE****/
复制代码

所有资料51hei提供下载:
STM32 CH573例程.7z (159.95 KB, 下载次数: 5)


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表