STM32智能卡发送问题

2019-10-15 23:31发布

先贴程序,这是官方的一个智能卡接口的demo,问题在程序下面,望大神指点
int main(void)
{
****************一堆初始化
while(1)
  {
    /* Loop while no Smartcard is detected */  
    while(CardInserted == 0)
    {
    }
    /* Wait A2R --------------------------------------------------------------*/
    SCState = SC_POWER_ON;
    SC_ADPU.Header.CLA = 0x00;
    SC_ADPU.Header.INS = SC_GET_A2R;
    SC_ADPU.Header.P1 = 0x00;
    SC_ADPU.Header.P2 = 0x00;
    SC_ADPU.Body.LC = 0x00;
    while(SCState != SC_ACTIVE_ON_T0)
    {
      SC_Handler(&SCState, &SC_ADPU, &SC_Responce);
     //delay_ms(40);//不加延时仅仅显示发送给USART1的数据//不加延时就无法完成U3发送
    }
    /* Apply the Procedure Type Selection (PTS) */
    SC_PTSConfig();

    /* Inserts delay(400ms) for Smartcard clock resynchronisation */
    delay_ms(400);
……………………………………
}
问题出现在红 {MOD}注释那里 //delay_ms(40);//不加延时仅仅显示发送给USART1的数据//不加延时就无法完成U3发送  
如果不加延时的话,后面的给智能卡的信息交互就无法进行,通过单步调试问题出现在
    SC_PTSConfig();这个函数里面
      USART_SendData(USART3, SCData);
      while(USART_GetFlagStatus(USART3, USART_FLAG_TC) == RESET)
      {

      }
死在这个循环里了,但是此时可以读出ATR(复位应答)
如果加上延时,就可以正常进行交互,但是ATR只有第一字节有信息,其他全为零
希望做过智能卡相关的大神指点一下,不胜感激!
新人实在没啥悬赏金了


友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。