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

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
电机速度变化太快了吧,串口跟不上
慎微 回答时间: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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版