Index: ICCard/ICCard/prj/MDK/Objects/YC3121_Keil.axf
===================================================================
Cannot display: file marked as a binary type.
svn:mime-type = application/octet-stream

Property changes on: ICCard/ICCard/prj/MDK/Objects/YC3121_Keil.axf
___________________________________________________________________
Deleted: svn:mime-type
## -1 +0,0 ##
-application/octet-stream
\ No newline at end of property
Index: ICCard/ICCard/prj/MDK/YC3121_Keil.uvoptx
===================================================================
--- /YC3121_demo/ModuleDemo/ICCard/ICCard/prj/MDK/YC3121_Keil.uvoptx	(revision 590)
+++ /YC3121_demo/ModuleDemo/ICCard/ICCard/prj/MDK/YC3121_Keil.uvoptx	(working copy)
@@ -119,8 +119,23 @@
       <TargetDriverDllRegistry>
         <SetRegEntry>
           <Number>0</Number>
+          <Key>DLGTARM</Key>
+          <Name>(1010=-1,-1,-1,-1,0)(1007=-1,-1,-1,-1,0)(1008=-1,-1,-1,-1,0)</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>ARMDBGFLAGS</Key>
+          <Name></Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
+          <Key>DLGUARM</Key>
+          <Name>/</Name>
+        </SetRegEntry>
+        <SetRegEntry>
+          <Number>0</Number>
           <Key>JL2CM3</Key>
-          <Name>-U4294967295 -O78 -S2 -ZTIFSpeedSel5000 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(0BB11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO31 -FD20000 -FCA000 -FN1 -FF0YC3121 -FS01000000 -FL080000</Name>
+          <Name>-U4294967295 -O78 -S2 -A0 -C0 -JU1 -JI127.0.0.1 -JP0 -RST0 -N00("ARM CoreSight SW-DP") -D00(0BB11477) -L00(0) -TO18 -TC10000000 -TP21 -TDS8007 -TDT0 -TDC1F -TIEFFFFFFFF -TIP8 -TB1 -TFE0 -FO31 -FD20000 -FCA000 -FN1 -FF0YC3121 -FS01000000 -FL080000</Name>
         </SetRegEntry>
         <SetRegEntry>
           <Number>0</Number>
@@ -128,19 +143,36 @@
           <Name>UL2CM3(-S0 -C0 -P0 -FD20000000 -FC1000)</Name>
         </SetRegEntry>
       </TargetDriverDllRegistry>
-      <Breakpoint/>
+      <Breakpoint>
+        <Bp>
+          <Number>0</Number>
+          <Type>0</Type>
+          <LineNumber>115</LineNumber>
+          <EnabledFlag>1</EnabledFlag>
+          <Address>16779164</Address>
+          <ByteObject>0</ByteObject>
+          <HtxType>0</HtxType>
+          <ManyObjects>0</ManyObjects>
+          <SizeOfObject>0</SizeOfObject>
+          <BreakByAccess>0</BreakByAccess>
+          <BreakIfRCount>1</BreakIfRCount>
+          <Filename>C:\Users\LX\Desktop\驴脥禄搂\7816\software1\ModuleDemo\ICCard\ICCard\user\main.c</Filename>
+          <ExecCommand></ExecCommand>
+          <Expression></Expression>
+        </Bp>
+      </Breakpoint>
       <Tracepoint>
         <THDelay>0</THDelay>
       </Tracepoint>
       <DebugFlag>
         <trace>0</trace>
         <periodic>0</periodic>
-        <aLwin>0</aLwin>
+        <aLwin>1</aLwin>
         <aCover>0</aCover>
         <aSer1>0</aSer1>
         <aSer2>0</aSer2>
         <aPa>0</aPa>
-        <viewmode>0</viewmode>
+        <viewmode>1</viewmode>
         <vrSel>0</vrSel>
         <aSym>0</aSym>
         <aTbox>0</aTbox>
Index: ICCard/ICCard/prj/MDK/YC3121_Keil.uvprojx
===================================================================
--- /YC3121_demo/ModuleDemo/ICCard/ICCard/prj/MDK/YC3121_Keil.uvprojx	(revision 590)
+++ /YC3121_demo/ModuleDemo/ICCard/ICCard/prj/MDK/YC3121_Keil.uvprojx	(working copy)
@@ -311,7 +311,7 @@
           </ArmAdsMisc>
           <Cads>
             <interw>1</interw>
-            <Optim>1</Optim>
+            <Optim>3</Optim>
             <oTime>0</oTime>
             <SplitLS>0</SplitLS>
             <OneElfS>0</OneElfS>
@@ -320,11 +320,11 @@
             <PlainCh>0</PlainCh>
             <Ropi>0</Ropi>
             <Rwpi>0</Rwpi>
-            <wLevel>1</wLevel>
+            <wLevel>2</wLevel>
             <uThumb>0</uThumb>
             <uSurpInc>0</uSurpInc>
             <uC99>1</uC99>
-            <uGnu>1</uGnu>
+            <uGnu>0</uGnu>
             <useXO>0</useXO>
             <v6Lang>1</v6Lang>
             <v6LangP>1</v6LangP>
Index: ICCard/ICCard/user/main.c
===================================================================
--- /YC3121_demo/ModuleDemo/ICCard/ICCard/user/main.c	(revision 590)
+++ /YC3121_demo/ModuleDemo/ICCard/ICCard/user/main.c	(working copy)
@@ -3,7 +3,7 @@
   * @file    3121Demo\ModuleDemo\ICCard\ICCard\user\main.c
   * @author  Yichip Application Team
   * @version V1.0.0
-  * @date    9-Feb-2020
+  * @date    19-Feb-2020
   * @brief   ICCard test program.
   ******************************************************************************
   * @attention
@@ -65,7 +65,7 @@
 {
 	UART_Configuration();
 
-  MyPrintf("7816 Demo !\n\n");
+	MyPrintf("7816 Demo !\n\n");
 
 	ISO7816_IO_Config();	
 	
@@ -85,8 +85,8 @@
 	UART_InitTypeDef UART_InitStruct;
 
 	/* Configure serial ports 0 RX and TX for IO. */
-	GPIO_Config(GPIOA, GPIO_Pin_1, GPCFG_UART0_TXD);
-	GPIO_Config(GPIOA, GPIO_Pin_0, GPCFG_UART0_RXD);
+	GPIO_Config(GPIOA, GPIO_Pin_1, UART0_TXD);
+	GPIO_Config(GPIOA, GPIO_Pin_0, UART0_RXD);
 
 	/* USARTx configured as follow:
   - BaudRate = 115200 baud  
@@ -105,154 +105,134 @@
 	
 	UART_Init(UART0, &UART_InitStruct);
 }
-
-
-uint16_t ISO7816_loopBack(void)
+uint16_t iso7816_init(uint8_t vcc_sel, uint8_t *out_atr,uint8_t *atrlen)
 {
-    uint8_t  Reg_Int1;
-    uint8_t ATRLen;
-    uint16_t Ret;
-    uint16_t RecLen;
-    uint16_t SendLen; 
-    uint8_t ApduCmd[280];
-	
-	uint8_t SELECT_PSE[]	= {0x00,0xA4,0x04,0x00,0x0E,
-						   0x31,0x50,0x41,0x59,0x2E,0x53,0x59,0x53,0x2E,0x44,0x44,0x46,0x30,0x31,0x00};  /* SELECT_PPSE */
-	uint8_t i=0;
-    
-	atr_time_start();
-	
+	uint8_t ATRLen;
+	uint16_t Ret;
+	uint8_t vcard_num = 0;;
+	vcard_num = vcc_sel;
 TOResetCard:
-#if 1
-	delay_ms(1000); 			 //1s
-#endif
-
-    //���Ƭ
-    Ret = ISO7816_OperateSelect(ISO7816_ACTIVE_CARD);
-    if(Ret == ISO7816_CARD_STUTES_ERROR)
-    {
-        goto TOResetCard;
-    }
-	
+	atr_time_start();
+	//激活卡片
+	Ret = ISO7816_OperateSelect(ISO7816_ACTIVE_CARD,vcard_num);
+	if(Ret != OK)
+	{
+		return Ret;
+	}
 TOWarmResetCard:
-    //���ո�λ��Ϣ
-    Ret = ISO7816_GetAtr(&g_7816Para.aAtr[1], &ATRLen);
-
-	  //���atr��ؼ�����
-    if(OK != Ret)
-    {
-        if((ISO7816_ATR_LEN_ERROR == Ret))
-        {
-            if((g_7816Para.bFlag & BIT1) == 0)
-            {
-                delay_ms(10);
-
-                ISO7816_OperateSelect(ISO7816_WARM_RESET);
-                goto TOWarmResetCard;
-            }
-
-        }
-        iso7816_deactive();
-        delay_ms(5);
-        goto TOResetCard;
-    }
-    
+	//接收复位信息
+	Ret = ISO7816_GetAtr(&g_7816Para.aAtr[1], &ATRLen);
+#ifdef DEBUG_7816
+	MyPrintf("ISO7816_GetAtr Result = %x\n",Ret);
+#endif
+	//清除atr相关计算器 
+	if(OK != Ret)
+	{
+		if((ISO7816_ATR_LEN_ERROR == Ret))
+		{
+			if((g_7816Para.bFlag & BIT1) == 0)
+			{
+				delay_ms(5);
+				ISO7816_OperateSelect(ISO7816_WARM_RESET,vcard_num);
+				goto TOWarmResetCard;
+			}
+
+		}
+		iso7816_deactive();
+		return Ret;
+	}
+	//goto TOResetCard;
 	g_7816Para.aAtr[0] = ATRLen;
-	delay_ms(50);
-
-		//�Զ�����C0
+	memcpy(out_atr,g_7816Para.aAtr+1,ATRLen);
+	*atrlen = ATRLen;
+	//delay_ms(50);
+	//自动发送C0
 	g_7816Para.bFlag |= BIT2;
 	memset(&g_T1.bIFSC, 0, sizeof(g_T1));
 
 	g_T1.bIFSC = 32;
-    //ATR���ݴ���
-    Ret = ISO7816_DisposeATR(&g_7816Para.aAtr[1], ATRLen);
-    if(OK != Ret)
-    {
-        if((Ret == ISO7816_ATR_TA1_ERROR) || (Ret == ISO7816_ATR_TB1_ERROR)
-            || (Ret == ISO7816_ATR_TB3_ERROR) || (Ret == ISO7816_ATR_TA3_ERROR)
-            || (Ret == ISO7816_ATR_TC2_ERROR) || (Ret == ISO7816_ATR_TC3_ERROR) 
-            || (Ret == ISO7816_ATR_TA2_ERROR) || (Ret == ISO7816_ATR_TD2_ERROR) 
-            || (Ret == ISO7816_ATR_TB2_ERROR) )
-        {
-            if((g_7816Para.bFlag & BIT1) == 0)
-            {
-                ISO7816_OperateSelect(ISO7816_WARM_RESET);
-                goto TOWarmResetCard;               
-            }
-            else
-            {
-                ISO7816_OperateSelect(ISO7816_DEACTIVE_CARD);
-                delay_ms(10);
-                goto TOResetCard;               
-            }               
-        }
-        else
-        {
-            ISO7816_OperateSelect(ISO7816_DEACTIVE_CARD);
-            delay_ms(10);
-            goto TOResetCard;           
-        } 
-    }
+	//ATR数据处理
+	Ret = ISO7816_DisposeATR(&g_7816Para.aAtr[1], ATRLen);
+	if(OK != Ret)
+	{
+		if((Ret == ISO7816_ATR_TA1_ERROR) || (Ret == ISO7816_ATR_TB1_ERROR)
+			|| (Ret == ISO7816_ATR_TB3_ERROR) || (Ret == ISO7816_ATR_TA3_ERROR)
+			|| (Ret == ISO7816_ATR_TC2_ERROR) || (Ret == ISO7816_ATR_TC3_ERROR) 
+			|| (Ret == ISO7816_ATR_TA2_ERROR) || (Ret == ISO7816_ATR_TD2_ERROR) 
+			|| (Ret == ISO7816_ATR_TB2_ERROR) )
+		{
+			if((g_7816Para.bFlag & BIT1) == 0)
+			{
+				ISO7816_OperateSelect(ISO7816_WARM_RESET,vcard_num);
+				goto TOWarmResetCard;				
+			}
+			else
+			{
+				ISO7816_OperateSelect(ISO7816_DEACTIVE_CARD,vcard_num);
+				delay_ms(10);
+				goto TOResetCard;				
+			}				
+		}
+		else
+		{
+			ISO7816_OperateSelect(ISO7816_DEACTIVE_CARD,vcard_num);
+			delay_ms(10);
+			goto TOResetCard;			
+		} 
+	}
 	
 	ISO7816_config_mode_fun();
-
-  #ifdef DEBUG_7816_EMV
-	MyPrintf("reset ok\n");
-  #endif
-
-    //����pps
-    if((g_7816Para.bFlag & BIT0) == 1)
+	
+	if((g_7816Para.bFlag & BIT0) == 1)
     {
         if(g_7816Para.bTA1 != 0x11)
         {
             Ret = ISO7816_DisposePPS(g_7816Para.bTA1);
             if(OK != Ret)
             {
-                ISO7816_OperateSelect(ISO7816_DEACTIVE_CARD);
+                ISO7816_OperateSelect(ISO7816_DEACTIVE_CARD,vcard_num);
                 delay_ms(10);
                 goto TOResetCard;
             }           
         } 
     }
-    
-    memcpy(ApduCmd,SELECT_PSE,20);
-    SendLen= 20;
-
-    //t1
-    if(g_7816Para.bProlType == 1)
-    {
-        uint8_t TmpCmd[5];
-        //??IFSD
-        g_T1.bIFSD = 254;
-        TmpCmd[0] = 254;
-
-        Ret = ISO7816_TPDU_T1Send(TmpCmd, 1, T_S_IFS);
-        if(Ret != OK)
-        {
-            ISO7816_OperateSelect( ISO7816_DEACTIVE_CARD);
-            delay_ms(10);
-            goto TOResetCard;       
-        }
-    }
-    
-TOSendCMD:
-    delay_ms(2);
+	return 0;
+}
 
-    #ifdef DEBUG_7816_EMV
-	MyPrintf("cmd\n");
-    #endif
+uint16_t ISO7816_loopBack(void)
+{
+	uint8_t ATRLen;
+    uint16_t SendLen; 
+	uint16_t RecLen;
+    uint8_t ApduCmd[280];
+	uint16_t Ret;
+	uint8_t SELECT_PSE[]	= {0x00,0xA4,0x04,0x00,0x0E,
+						   0x31,0x50,0x41,0x59,0x2E,0x53,0x59,0x53,0x2E,0x44,0x44,0x46,0x30,0x31,0x00};  /* SELECT_PPSE */
+	
+TOResetCard:
+	Ret = iso7816_init(1,&g_7816Para.aAtr[1], &ATRLen);
+	if(Ret != OK)
+	{
+		ISO7816_OperateSelect(ISO7816_DEACTIVE_CARD,1);
+		delay_ms(10);
+		goto TOResetCard;	
+	
+	}
+	memcpy(ApduCmd,SELECT_PSE,20);
+TOSendCMD:						   
+	
+    SendLen= 20;
     Ret = ISO7816_Dispose_CMD(ApduCmd, SendLen, g_7816Para.aRecBuff, &RecLen);
     if(OK != Ret)
     {
         if((ISO7816_PARITY_ERROR == Ret))
         {
-            ISO7816_OperateSelect(ISO7816_WARM_RESET);
+            ISO7816_OperateSelect(ISO7816_WARM_RESET,1);
             delay_ms(10);
-            goto TOWarmResetCard;
+            goto TOResetCard;
         }
 
-        ISO7816_OperateSelect( ISO7816_DEACTIVE_CARD);
+        ISO7816_OperateSelect( ISO7816_DEACTIVE_CARD,1);
         delay_ms(10);
         goto TOResetCard;
 
@@ -266,7 +246,7 @@
     {
         if(g_7816Para.aRecBuff[1] == 0x70)
         {
-            ISO7816_OperateSelect(ISO7816_DEACTIVE_CARD);
+            ISO7816_OperateSelect(ISO7816_DEACTIVE_CARD,1);
             delay_ms(100);
             goto TOResetCard;
         }
@@ -283,7 +263,7 @@
     {
         if(g_7816Para.aRecBuff[0] == 0xff)
         {
-            ISO7816_OperateSelect(ISO7816_DEACTIVE_CARD);
+            ISO7816_OperateSelect(ISO7816_DEACTIVE_CARD,1);
             delay_ms(10);
             goto TOResetCard;
         }       
@@ -293,7 +273,8 @@
 
     memcpy(ApduCmd,SELECT_PSE,20);
     SendLen= 20;
-    goto TOSendCMD ;
+	goto TOSendCMD ;
+ 
 }
 
-/************************ (C) COPYRIGHT Yichip Microelectronics *****END OF FILE****/
\ No newline at end of file
+/************************ (C) COPYRIGHT Yichip Microelectronics *****END OF FILE****/
