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

stm32f407 hal 库usart1调节电机pid

[复制链接]
失落的人 提问时间:2019-11-7 23:03 /
今天遇到的问题是
  usart1单独控制,编码器不输出速度是能够稳定运行
  并且usart能输出电机的运动状态(正转,反转,停止)
输出速度之后会死在
HAL_StatusTypeDef HAL_UART_Transmit(UART_HandleTypeDef *huart, uint8_t *pData, uint16_t Size, uint32_t Timeout)
{
  uint16_t* tmp;
  uint32_t tickstart = 0U;
  
  /* Check that a Tx process is not already ongoing */
  if(huart->gState == HAL_UART_STATE_READY)
  {
    if((pData == NULL ) || (Size == 0))
    {
      return  HAL_ERROR;
    }
这个地方
   发送时使用的usart1 print重定向发送
int fputc(int ch, FILE *f)
{
   HAL_UART_Transmit (&husart1, (uint8_t *)&ch,1 , 0xffff);
  return ch;
}
电机速度编码器中断以后usart1重定向发送的


收藏 评论4 发布时间:2019-11-7 23:03

举报

4个回答
yangrenbing 回答时间:2019-11-8 08:05:37
电机速度变化太快了吧,串口跟不上
mikecai 回答时间:2019-11-8 09:53:13
您的编码器应是增量编码器吧,单向单工的,即纯接收的的,对不?
1)若是,关闭 uart 的 打印重定向发送,看还死机不?
2)若还不行,关闭 uart 发送,只保留接收,看还死机不?
若是双向双工的uart 通讯,能否祥细告述增量编码器 波特率?

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

mylovemcu 回答时间:2019-11-8 14:46:45
应该是发送太频繁造成的  可以试试用DMA发送  

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

butterflyspring 回答时间:2019-11-20 15:59:17
如果是卡在 return  HAL_ERROR;这个地方,断点打在这里,看看前面的是哪个条件,顺着线索找下去就应该能发现原因

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版