×
单片机 > 单片机程序设计 > 详情

STM32F030 485通讯遇到的问题

发布时间:2020-05-19 发布时间:
|

在做项目的时候要求用485进行主机与从机进行通讯,在485发送和接收的时候要对驱动器进行控制,在刚开始调发送和接收的时候总是失败,原因有一下几个


使能驱动器后立刻发送数据,导致第一个数据有时候错误。

串口中断后马上控制驱动器为发送模式,然后发送数据,导致出错,有时直接卡死。

3.在发送指令后马上接收有时候串口溢出标志位会置位,原因不明,通过在错误中断清除标志位来处理。


4.在进入错误中断后读取串口的ISR寄存器后要延时一段时间才能清除标志位,不然无法清除。


5.STM32F0为M0的内核,中断分组和M3,M4的不同,只有抢占,怎么区分优先级现在还不明。


在错误中断中清除标志位的方法


/**

 * Description:串口错误回调函数

 * Parameter  :USARTX_Handler 串口句柄

 * Return     :None

 * Others     :串口接收出错进入此函数

 *   :

 */

void HAL_UART_ErrorCallback(UART_HandleTypeDef *USARTX_Handler)

{

uint8_t c;

c = USARTX_Handler->Instance->ISR;

for(int i;i<10000;i++);//读取SR寄存器后要延时一段时间,否则无法进入下面的判断

//printf("GG");

if((__HAL_UART_GET_FLAG(USARTX_Handler, UART_FLAG_PE))!=RESET)

{

READ_REG(USARTX_Handler->Instance->RDR);//PE清标志,第二步读DR

READ_REG(USARTX_Handler->Instance->TDR);//PE清标志,第二步读DR

__HAL_UART_CLEAR_FLAG(USARTX_Handler, UART_FLAG_PE);//清标志

}

if((__HAL_UART_GET_FLAG(USARTX_Handler, UART_FLAG_FE))!=RESET)

{

READ_REG(USARTX_Handler->Instance->RDR);//FE清标志,第二步读DR

READ_REG(USARTX_Handler->Instance->TDR);//PE清标志,第二步读DR

__HAL_UART_CLEAR_FLAG(USARTX_Handler, UART_FLAG_FE);

}

if((__HAL_UART_GET_FLAG(USARTX_Handler, UART_FLAG_NE))!=RESET)

{

READ_REG(USARTX_Handler->Instance->RDR);//NE清标志,第二步读DR

READ_REG(USARTX_Handler->Instance->TDR);//PE清标志,第二步读DR

__HAL_UART_CLEAR_FLAG(USARTX_Handler, UART_FLAG_NE);

}        

if((__HAL_UART_GET_FLAG(USARTX_Handler, UART_FLAG_ORE))!=RESET)

{

READ_REG(USARTX_Handler->Instance->CR1);//ORE清标志,第二步读CR

READ_REG(USARTX_Handler->Instance->TDR);//PE清标志,第二步读DR

__HAL_UART_CLEAR_FLAG(USARTX_Handler, UART_FLAG_ORE);

__HAL_UART_CLEAR_OREFLAG(USARTX_Handler);

if(USARTX_Handler->Instance == USART1)

{

HAL_UART_Receive_IT(USARTX_Handler,&USART1_RxBuffer,1);

}

        else if(USARTX_Handler->Instance == USART3)

{

HAL_UART_Receive_IT(USARTX_Handler,&USART3_RxBuffer,1);

}

else if(USARTX_Handler->Instance == USART5)

{

HAL_UART_Receive_IT(USARTX_Handler,&USART5_RxBuffer,1);

}

}      

}




『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
单片机的抗干扰措施有哪些