问题解决了,上位机发送开始或者停止命令,STM32收到后启动或停止。我在主程序里
while(1)
{
if(FHRCounter ==4000)
{
FHRSendFlag = 1;
FHRCounter = 0;
PackFHRData();
//保证此时不发送声音数据
// if(GetEPTxStatus(ENDP1) == EP_TX_NAK) ???????为什么加上这句就不行呢?
// {
UserToPMABufferCopy(FHRTXBuffer, ENDP1_TXADDR, 5);
SetEPTxCount(ENDP1, 5);
SetEPTxValid(ENDP1);
// }
FHRSendFlag = 0; //允许发送声音数据
}
//WorkState(); //判断是否工作
}
在TIM2里面
FHRCounter++;
if (FHRSendFlag == 0)
{
UserToPMABufferCopy(SoundADData, ENDP1_TXADDR, 5);
SetEPTxCount(ENDP1, 5); //设置端点1的计数值
SetEPTxValid(ENDP1); // enable endpoint for transmission
}
现在TIM2中发送的都能出去,可是while里面的有时候会丢,怎么回事啊?
|