wgydzy091 发表于 2016-9-8 16:42:12

怎么提供串口大师给STM32F302-NUCLEO发送指令

在使用ST官网的例程X-CUBE-SPN7的UART_UI文件时,发现不知道该怎么通过串口大师来发正确的指令。

判断条件里有个Get_UART_Data() == 266 ,这个Get_UART_Data()只是返回 (UART.Instance->RDR);
这个266不知道怎么来的。有没有哪位高人指导一下?{:3_60:}


void UART_Set_Value()
{
if(Get_UART_Data() == 266 && (huart2.State != HAL_UART_STATE_BUSY_TX && huart2.State != HAL_UART_STATE_BUSY_TX_RX))
{
   if(Uart_cmd_flag == 0)
    {   
   CMD_Parser((char*)aRxBuffer);
    }
   else
   {
    SIXSTEP_parameters.Uart_value_to_set = UART_num_decode();

    switch(SIXSTEP_parameters.Uart_cmd_to_set)
    {
   case SETSPD_CMD:/*!<Set the new speed value command received */
      PI_parameters.Reference = SIXSTEP_parameters.Uart_value_to_set;
      SIXSTEP_parameters.Ramp_Start = 1;
      BUFF_RCV = RXBUFFERSIZE;      
      Uart_cmd_flag = 0;      
      HAL_UART_Transmit(&huart2, (uint8_t *)rowLxBuffer, (COUNTOF(rowLxBuffer) - 1),500);      
      UART_FLAG_RECEIVE = TRUE;
      huart2.State = HAL_UART_STATE_READY;      
      break;
   case INIREF_CMD:/*!<Set the new STARUP_CURRENT_REFERENCE value command received */   
      SIXSTEP_parameters.Ireference = SIXSTEP_parameters.Uart_value_to_set;
      BUFF_RCV = RXBUFFERSIZE;      
      Uart_cmd_flag = 0;      
      huart2.State = HAL_UART_STATE_READY;
      HAL_UART_Transmit(&huart2, (uint8_t *)rowLxBuffer, (COUNTOF(rowLxBuffer) - 1),500);      
      UART_FLAG_RECEIVE = TRUE;      
      break;
   case POLESP_CMD:/*!<Set the Pole Pairs value command received */
      SIXSTEP_parameters.NUMPOLESPAIRS = SIXSTEP_parameters.Uart_value_to_set;
      BUFF_RCV = RXBUFFERSIZE;      
      Uart_cmd_flag = 0;      
      huart2.State = HAL_UART_STATE_READY;
      HAL_UART_Transmit(&huart2, (uint8_t *)rowLxBuffer, (COUNTOF(rowLxBuffer) - 1),500);      
      UART_FLAG_RECEIVE = TRUE;
      break;
   case ACCELE_CMD:/*!<Set the Accelleration for Start-up of the motor command received */
      SIXSTEP_parameters.ACCEL = SIXSTEP_parameters.Uart_value_to_set;
      BUFF_RCV = RXBUFFERSIZE;      
      Uart_cmd_flag = 0;      
      huart2.State = HAL_UART_STATE_READY;
      HAL_UART_Transmit(&huart2, (uint8_t *)rowLxBuffer, (COUNTOF(rowLxBuffer) - 1),500);      
      UART_FLAG_RECEIVE = TRUE;
       break;   
   case DIRECT_CMD:/*!<Set the motor direction */
      SIXSTEP_parameters.CW_CCW = SIXSTEP_parameters.Uart_value_to_set;
      MC_Set_PI_param(&PI_parameters);         
      BUFF_RCV = RXBUFFERSIZE;      
      Uart_cmd_flag = 0;      
      huart2.State = HAL_UART_STATE_READY;
      HAL_UART_Transmit(&huart2, (uint8_t *)rowLxBuffer, (COUNTOF(rowLxBuffer) - 1),500);      
      UART_FLAG_RECEIVE = TRUE;
       break;            
   case KP_PRM_CMD:/*!<Set the KP PI param command received */
      PI_parameters.Kp_Gain = SIXSTEP_parameters.Uart_value_to_set;
      BUFF_RCV = RXBUFFERSIZE;      
      Uart_cmd_flag = 0;      
      huart2.State = HAL_UART_STATE_READY;
      HAL_UART_Transmit(&huart2, (uint8_t *)rowLxBuffer, (COUNTOF(rowLxBuffer) - 1),500);      
      UART_FLAG_RECEIVE = TRUE;
       break;
   case KI_PRM_CMD:/*!<Set the KI PI param command received */
      PI_parameters.Ki_Gain = SIXSTEP_parameters.Uart_value_to_set;
      BUFF_RCV = RXBUFFERSIZE;      
      Uart_cmd_flag = 0;      
      huart2.State = HAL_UART_STATE_READY;
      HAL_UART_Transmit(&huart2, (uint8_t *)rowLxBuffer, (COUNTOF(rowLxBuffer) - 1),500);      
      UART_FLAG_RECEIVE = TRUE;
       break;   
      case POTENZ_CMD:/*!<Enable Potentiometer command received */
      BUFF_RCV = RXBUFFERSIZE;      
      Uart_cmd_flag = 0;      
      huart2.State = HAL_UART_STATE_READY;
      HAL_UART_Transmit(&huart2, (uint8_t *)rowLxBuffer, (COUNTOF(rowLxBuffer) - 1),500);      
      UART_FLAG_RECEIVE = TRUE;
      SIXSTEP_parameters.Potentiometer = SIXSTEP_parameters.Uart_value_to_set;         
      break;
      }/* switch case */
    }/* else */
}/* if */

wgydzy091 发表于 2016-9-8 16:43:35

实在是看了半天没找到对应的说明。

wgydzy091 发表于 2016-9-8 16:51:58

自己也改过串口参数,但是有问题,有时候串口就堵死了,就想看看官方实现的是怎么样,有没有可以参考的资料啊

无薪税绵 发表于 2017-1-10 08:14:27

可能是串口的数据长度不能超过266个。

freeelectron 发表于 2017-1-10 08:28:22

这个是不是通过串口命令行来控制单片机的啊?

芯领神会 发表于 2017-1-10 08:54:06

个人还是不怎么习惯使用这种库

z258121131 发表于 2017-1-10 08:56:01

签到是一种态度

ts2000 发表于 2017-1-10 09:18:12


个人还是不怎么习惯使用这种库

党国特派员 发表于 2017-1-10 09:26:14

我觉得应该是255这个值,打字的时候没有注意,打成了266.
因为RDR的值不可能是266啊,最大也不过255.

数码小叶 发表于 2017-1-10 09:58:19

中括号里的STARTM这些,在程序里可以找到不?应该是直接输这些命令啊。。。。
页: [1] 2
查看完整版本: 怎么提供串口大师给STM32F302-NUCLEO发送指令