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重定向发送的
电机速度变化太快了吧,串口跟不上 您的编码器应是增量编码器吧,单向单工的,即纯接收的的,对不?
1)若是,关闭 uart 的 打印重定向发送,看还死机不?
2)若还不行,关闭 uart 发送,只保留接收,看还死机不?
若是双向双工的uart 通讯,能否祥细告述增量编码器 波特率? 应该是发送太频繁造成的可以试试用DMA发送 如果是卡在 returnHAL_ERROR;这个地方,断点打在这里,看看前面的是哪个条件,顺着线索找下去就应该能发现原因:)
页:
[1]