jyl518-283289 发表于 2018-10-12 16:36:56

STM8S003F3串口压力测试失败?

本帖最后由 jyl518-283289 于 2018-10-17 16:21 编辑

CPU:STM8S003F3,开发环境IAR串口接的485芯片,正常工作时通信正常,但压力测试485通信>=5000次后,485总线总是死掉【485收发控制脚持续高电平(发送状态)】,
程序如下:void IO_Init(void)
{
GPIO_Init(GPIOC, GPIO_PIN_5, GPIO_MODE_OUT_PP_HIGH_FAST);      //配置RED LED,初始LED灭
GPIO_Init(GPIOC, GPIO_PIN_3, GPIO_MODE_OUT_PP_HIGH_FAST);      //配置GREEN LED,初始LED灭

GPIO_Init(GPIOD, GPIO_PIN_2, GPIO_MODE_OUT_PP_LOW_FAST);      //配置AD_SCK,使能AD(PD_SCK置低)
GPIO_Init(GPIOD, GPIO_PIN_3, GPIO_MODE_IN_FL_NO_IT);                //配置Dout,为“浮动输入无中断功能”

GPIO_Init(GPIOD, GPIO_PIN_4, GPIO_MODE_OUT_PP_LOW_FAST);      //配置485发送接收控制脚,初始输出低电平(接收)

GPIO_Init(GPIOD, GPIO_PIN_5, GPIO_MODE_OUT_PP_LOW_FAST);    //配置Uart1 Tx
GPIO_Init(GPIOD, GPIO_PIN_6, GPIO_MODE_IN_PU_NO_IT);             //配置Uart1 Rx
UART1_Init((u32)9600, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO, UART1_SYNCMODE_CLOCK_DISABLE,      UART1_MODE_TXRX_ENABLE);
UART1_Init((u32)9600, UART1_WORDLENGTH_8D, UART1_STOPBITS_1, UART1_PARITY_NO, UART1_SYNCMODE_CLOCK_DISABLE,      UART1_MODE_RX_ENABLE);

UART1_ITConfig(UART1_IT_RXNE_OR, ENABLE);                     //开中断(接收数据寄存器非空或溢出错误中断)
UART1_Cmd(ENABLE);
enableInterrupts();
}
INTERRUPT_HANDLER(UART1_TX_IRQHandler,17)            //串口发送完成中断函数
{
static uint8 tx_cnt = 0;

FlagStatus fs;
fs = UART1_GetFlagStatus(UART1_FLAG_TXE);                //发送数据寄存器空标志
if(fs == SET)
{
    if(tx_cnt < 11)
    {
      UART1->DR = UART.uart_tx_buf;
      UART.uart_tx_buf = 0;
      tx_cnt ++;
    }
    else
    {
      tx_cnt = 0;
      UART1->CR2 &= ~(1<<6);                            //关闭 发送完成中断
       GPIO_WriteLow(GPIOD, GPIO_PIN_4);         //485通信4000~5000次内,必定485收发控制脚置不了低电平
       UART.uart_rx_flag = 0;                                 //置为允许接收状态
    }   
}
}只有中发送中“GPIO_WriteLow(GPIOD, GPIO_PIN_4); ”将总线置为接收状态。
貌视偶发状态下,没有执行到这条程序
有知道的指点下!!!谢谢!!!





changjianqiyuan 发表于 2018-10-12 17:03:34

芯片软件卡死码

a707083746 发表于 2018-10-13 16:21:35

是置了而置不了低电平,还是根本就没置,或者置低了又在哪置高了。

jyl518-283289 发表于 2018-10-17 13:47:35

changjianqiyuan 发表于 2018-10-12 17:03
芯片软件卡死码

软件除485发送接收死掉,其它工作正常。

jyl518-283289 发表于 2018-10-17 13:49:10

a707083746 发表于 2018-10-13 16:21
是置了而置不了低电平,还是根本就没置,或者置低了又在哪置高了。

平时能置低电平(正常工作),
485连续通信5000次以上,就出现置不了低电平

robter 发表于 2018-10-25 08:12:48

可能被干扰了,通讯距离有多长?
页: [1]
查看完整版本: STM8S003F3串口压力测试失败?