CDC先给
STM32发指令,然后STM32获得uart2的11个数据(数据结构,一位数据长度,跟着10个数据),通过CDC把10位数据发给电脑。
问题,1,发的数据数量总是有问题。这个已经通过中间变量解决,但是目前仍不知道数量改变的机制。
2,发一次指令有用,但是下一次就没有数据了,然后再发一次才有。经过示波器查看,uart没有动作。所以问题应该是没有触发CDC。应该如何解决呢?
//回调函数
void HAL_UART_RxCpltCallback(UART_HandleTypeDef *huart)
{
UNUSED(huart2);
Rx_temp[R_Num]=aRxBuffer;
if (R_Num==0)
{
Rx_Num=Rx_temp[0];
}
R_Num++;
if (R_Num>Rx_Num)
{
Rx_Flag = 1;
R_Num=0;
}
if(R_Num>15)
{
Rx_Flag = 1;
R_Num=0;
}
HAL_UART_Receive_IT( huart2 (uint8_t *) aRxBuffer 1);
}
int main(void)
{
//初始化略
HAL_UART_Receive_IT( huart2(uint8_t *) aRxBuffer1);//开启uart中断
while (1)
{
if (Rx_Flag==1)
{
TempNum = (uint8_t)Rx_Num;//如果没有这个中间变量,Rx_Num会自己变化,不知道是为什么。
for (i=0;i=CDC_rx_len)
{
CDC_rx_len = 0;
i=0;
}
}