失落的人 发表于 2019-11-7 23:03:59

stm32f407 hal 库usart1调节电机pid

今天遇到的问题是
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))
    {
      returnHAL_ERROR;
    }
这个地方
   发送时使用的usart1 print重定向发送
int fputc(int ch, FILE *f)
{
   HAL_UART_Transmit (&husart1, (uint8_t *)&ch,1 , 0xffff);
return ch;
}
电机速度编码器中断以后usart1重定向发送的


yangrenbing 发表于 2019-11-8 08:05:37

电机速度变化太快了吧,串口跟不上

mikecai 发表于 2019-11-8 09:53:13

您的编码器应是增量编码器吧,单向单工的,即纯接收的的,对不?
1)若是,关闭 uart 的 打印重定向发送,看还死机不?
2)若还不行,关闭 uart 发送,只保留接收,看还死机不?
若是双向双工的uart 通讯,能否祥细告述增量编码器 波特率?

mylovemcu 发表于 2019-11-8 14:46:45

应该是发送太频繁造成的可以试试用DMA发送

butterflyspring 发表于 2019-11-20 15:59:17

如果是卡在 returnHAL_ERROR;这个地方,断点打在这里,看看前面的是哪个条件,顺着线索找下去就应该能发现原因:)
页: [1]
查看完整版本: stm32f407 hal 库usart1调节电机pid