OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3461|回复: 0

stm32h7的uart4发送数据为0x00问题

[复制链接]

11

主题

36

帖子

0

精华

初级会员

Rank: 2

积分
123
金钱
123
注册时间
2012-8-26
在线时间
11 小时
发表于 2020-1-20 21:37:00 | 显示全部楼层 |阅读模式
20金钱
用uart4来做485(TXH13,RXH14的复用功能uart4)通讯,初始化后循环发送rs485SendBuf[8]={0x01,0x03,0x00,0x00,0x00,0x01,0x84,0x0A}的数据,每发送一次电脑那边接收一直为一个0x00,查看初始化后uart4的isr寄存器状态,里面的CMF和FE位置1了,为何会置1不解,在后面加了清除这两个标志的语句后仍然发送数据为一个0x00,有知道原因的吗?
代码如下:
void SRS485_Init(u32 bound)
{
        GPIO_InitTypeDef GPIO_Initure;
       
        __HAL_RCC_GPIOB_CLK_ENABLE();                       
        __HAL_RCC_GPIOH_CLK_ENABLE();       
        __HAL_RCC_UART4_CLK_ENABLE();                       
       
        //2RS485 TX\RX IO
        GPIO_Initure.Pin=GPIO_PIN_13|GPIO_PIN_14;
        GPIO_Initure.Mode=GPIO_MODE_AF_PP;               
        GPIO_Initure.Pull=GPIO_PULLUP;                       
        GPIO_Initure.Speed=GPIO_SPEED_FREQ_VERY_HIGH;
        GPIO_Initure.Alternate=GPIO_AF6_UART4;       
        HAL_GPIO_Init(GPIOH,&GPIO_Initure);                  
       
        //2RS485 RE IO
        GPIO_Initure.Pin=GPIO_PIN_0;
        GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP;               
        GPIO_Initure.Pull=GPIO_PULLUP;                       
        GPIO_Initure.Speed=GPIO_SPEED_FREQ_VERY_HIGH;
        HAL_GPIO_Init(GPIOB,&GPIO_Initure);                  
         
        UART4_RS485Handler.Instance=UART4;                          
        UART4_RS485Handler.Init.BaudRate=bound;                  
        UART4_RS485Handler.Init.WordLength=UART_WORDLENGTH_8B;       
        UART4_RS485Handler.Init.StopBits=UART_STOPBITS_1;               
        UART4_RS485Handler.Init.Parity=UART_PARITY_NONE;               
        UART4_RS485Handler.Init.HwFlowCtl=UART_HWCONTROL_NONE;       
        UART4_RS485Handler.Init.Mode=UART_MODE_TX_RX;                 
        HAL_UART_Init(&UART4_RS485Handler);                          

  __HAL_UART_CLEAR_IT(&UART4_RS485Handler,UART_CLEAR_TCF);
#if EN_UART4_RX
        __HAL_UART_ENABLE_IT(&UART4_RS485Handler,UART_IT_RXNE);
        HAL_NVIC_EnableIRQ(UART4_IRQn);                                     
        HAL_NVIC_SetPriority(UART4_IRQn,3,4);                          
#endif       
    SRS485_TX_Set(0);   

                __HAL_UART_CLEAR_FLAG(&UART4_RS485Handler,UART_CLEAR_CMF);
                __HAL_UART_CLEAR_FLAG(&UART4_RS485Handler,UART_CLEAR_FEF);
}


void SRS485_Send_Data(u8 *buf,u8 len)
{
        u8 i=0;
        SRS485_TX_Set(1);                       
        HAL_UART_Transmit(&UART4_RS485Handler,buf,len,1000);
        SRS485_RX_CNT=0;          
        SRS485_TX_Set(0);               
}



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-5-11 08:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表