你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

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

[复制链接]
wgydzy091 提问时间:2016-9-8 16:42 /
在使用ST官网的例程X-CUBE-SPN7的UART_UI文件时,发现不知道该怎么通过串口大师来发正确的指令。

发什么都没反应

发什么都没反应

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


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(&I_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 */  

收藏 3 评论17 发布时间:2016-9-8 16:42

举报

17个回答
watershade 回答时间:2017-1-10 20:45:14
我没有硬件...

你的图中不是很清楚吗?STATUS, DIRICT CW/CCW等

你的字符能显示,波特率什么的应该没有问题。然后就是发送的是ASCII码,这页没有问题。问题可能是需不需要换行了,什么的。

另一个可能的问题是你的串口工具不支持交互操作。你可以试试Putty
wgydzy091 回答时间:2016-9-8 16:51:58
自己也改过串口参数,但是有问题,有时候串口就堵死了,就想看看官方实现的是怎么样,有没有可以参考的资料啊
党国特派员 回答时间:2017-1-10 09:26:14
我觉得应该是255这个值,打字的时候没有注意,打成了266.
因为RDR的值不可能是266啊,最大也不过255.
wgydzy091 回答时间:2016-9-8 16:43:35
实在是看了半天没找到对应的说明。
无薪税绵 回答时间:2017-1-10 08:14:27
可能是串口的数据长度不能超过266个。
freeelectron 回答时间:2017-1-10 08:28:22
这个是不是通过串口命令行来控制单片机的啊?
mtg 回答时间:2017-1-10 08:54:06
个人还是不怎么习惯使用这种库
z258121131 回答时间:2017-1-10 08:56:01
签到是一种态度
小小超 回答时间:2017-1-10 09:18:12

个人还是不怎么习惯使用这种库
wyxy163@126.com 回答时间:2017-1-10 09:58:19
提示: 作者被禁止或删除 内容自动屏蔽
cldym 回答时间:2017-1-10 12:17:32
个人还是不怎么习惯使用这种库
斜阳 回答时间:2017-1-10 13:15:12
Get_UART_Data()返回值是什么类型?作用是啥?做了哪些操作?
peter001 回答时间:2017-1-10 14:07:21
没用过,顶一下
haifeng-388081 回答时间:2017-1-10 18:20:26
签到是一种态度
zbber 回答时间:2017-1-10 18:22:07
我觉得应该是255这个值,打字的时候没有注意,打成了266
12下一页
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版