第一个问题是
void EP3_OUT_Callback(void)
{
HID_Data_Out( );
}
这个函数是产生数据的
int8_t HID_Data_Out( void )
{
uint8_t RcvBuffer [HID_MAX_BUFFER_SIZE], //0x3F bytes reserved for data + 1 for report ID
SendBuffer [CR95HF_RESPONSEBUFFER_SIZE]; //0x3F bytes reserved for data + 1 for report ID
HID_TRANSACTION = TRUE;
memset (RcvBuffer, 0x00,HID_MAX_BUFFER_SIZE);
memset (SendBuffer, 0x00,HID_MAX_BUFFER_SIZE);
/* Read received data (64 bytes) ... */
SetEPRxStatus(ENDP3, EP_RX_VALID);
USB_SIL_Read(EP3_OUT, RcvBuffer);
// Rcv buffer = command to CR95HF
// SendBuffer = CR95HF response
switch(RcvBuffer[HID_OFFSET])
{
// Send CR95HF command to CR95HF
case HID_SPI_SEND_CR95HFCMD :
if (RcvBuffer[HID_OFFSET_CMDCODE] != BAUD_RATE)
SPIUART_SendReceive(&RcvBuffer[HID_OFFSET_CMDCODE], &SendBuffer[HID_OFFSET_CMDCODE]);
else // UART baud rate is a specific command because MCU and CR95HF has to modify their configurations
CR95HF_ChangeUARTBaudRate (&RcvBuffer[HID_OFFSET_CMDCODE], &SendBuffer[HID_OFFSET_CMDCODE]);
break;
// send customs command
case HID_SPI_SEND_DATA:
CR95HF_SendCustomCommand(&RcvBuffer[HID_OFFSET_CMDCODE], &SendBuffer[HID_OFFSET_CMDCODE]);
break;
}
// the baudrate command are an exeption and shall be threat seperately
if (RcvBuffer[HID_OFFSET_CMDCODE] == BAUD_RATE)
{
// the baud rate command has been emmiting
UART_Initialization(BAUDRATE_DATARATE_DEFAULT );
}
/* SendBuffer format
1st byte : ID_SEND_HID_RESPONSE
2nd byte : repply or error code flag
3rd byte : nb byte
others bytes: data
*/
SendBuffer[HID_OFFSET] = HID_SEND_HID_RESPONSE;
SendBuffer[HID_OFFSET_LENGTH] =MIN(HID_MAX_BUFFER_SIZE,SendBuffer[HID_OFFSET_LENGTH]);
/* Allows the transmission */
SetEPTxStatus(ENDP3, EP_TX_VALID);
USB_SIL_Write(EP3_IN, SendBuffer, HID_MAX_BUFFER_SIZE);
return CR95HF_SUCCESS_CODE;
}
这个中断是在哪里触发的呢,没有找到那个触发的地方,还有就是怎么把读出的这个sendbuffer提取出来显示到LCD上呢
第二个问题是SPI的,
uint8_t SPI_SendReceiveByte(SPI_TypeDef* SPIx, uint8_t data)
这个spi是什么时候触发的中断呢,也没有找到那个点。
上边有这么一句 SPIUART_SendReceive(&RcvBuffer[HID_OFFSET_CMDCODE], &SendBuffer[HID_OFFSET_CMDCODE]);
这个是发送指令RcvBuffer,它是通过 USB_SIL_Read(EP3_OUT, RcvBuffer);读出的
我怎么找到这个指令是什么呢
或者我能不能给这个指令赋值,然后让它执行呢
这些问题不知道大神们能不能看明白,帮帮我吧,作为菜鸟,实在弄不懂,身边也没有懂的,先谢谢大家了
|