大佬教程收集整理的这篇文章主要介绍了STM32 - 在 HAL_UART_RxCpltCallback() 中调用步进电机时不会停止,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我使用 NucLeo-F401RE 来控制 LED 和驱动步进电机的 X-NucLeo-IHM01A1。
@H_52_2@mCU 通过 UART DMA 中断接收消息 rxdata[3]。 LED 的控制工作正常。但是,当 MCU 收到控制电机的消息时,电机继续旋转而不停止。如何通过 DMA 中断使步进电机正常工作?
voID HAL_UART_RxCpltCallBACk(UART_HandleTypeDef *huart){
/* Prevent unused argument(s) compilation warning */
UNUSED(huart);
/* NOTE: This function should not be modifIEd,when the callBACk is needed,the HAL_UART_RxCpltCallBACk Could be implemented in the user file
*/
///copy message
messageReceived();
}
voID messageReceived(){
if (rxdata[0] == 0x0A) //Led
{
HAL_UART_Transmit(&huart2,rxdata,3,500);
if(rxdata[1] == 1){
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_1,GPIO_PIN_reset); //Turn on
} else if(rxdata[1] == 2){
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_SET); // Turn off
}
} else if (rxdata[0] == 0x0B) // Motor Control
{
HAL_UART_Transmit(&huart2,500);
uint32_t n_steps = rxdata[2];
if(rxdata[1] == 0x01){ //If receive move forWARD command
BSP_MotorControl_Move(0,FORWARD,n_steps);
BSP_MotorControl_WaitWhileActive(0);
} else if(rxdata[1] == 0x02){ //If receive move BACkWARD command
BSP_MotorControl_Move(0,BACKWARD,n_steps);
BSP_MotorControl_WaitWhileActive(0);
}
}
}
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)
以上是大佬教程为你收集整理的STM32 - 在 HAL_UART_RxCpltCallback() 中调用步进电机时不会停止全部内容,希望文章能够帮你解决STM32 - 在 HAL_UART_RxCpltCallback() 中调用步进电机时不会停止所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。