OpenEdv-开源电子网

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

STM32F767IGT6使用uart5做485通信,无法正常发送接收

[复制链接]

5

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
152
金钱
152
注册时间
2015-12-5
在线时间
43 小时
发表于 2019-3-27 16:58:30 | 显示全部楼层 |阅读模式
5金钱
STM32F767IGT6使用uart5做485通信,无法正常发送接收,下面是代码求解
#include "rs485.h"
#include "sys.h"
#include "includes.h"                                         


u8 RS485RX[8];//HAL¿aê1óÃμÄ′®¿ú½óêÕ»o3å
UART_HandleTypeDef UART5_Handler; //UART¾ä±ú

void RS485_Init(u32 bound)
{
       
       
       
    //GPIO????
        GPIO_InitTypeDef GPIO_Initure;
       
                             //???PCF8574,????RE?
       
        __HAL_RCC_GPIOB_CLK_ENABLE();                        //??GPIOB??
        __HAL_RCC_UART5_CLK_ENABLE();                        //??UART5??
       
        GPIO_Initure.Pin=GPIO_PIN_12|GPIO_PIN_13; //PB12,13
        GPIO_Initure.Mode=GPIO_MODE_AF_PP;                //??????
        GPIO_Initure.Pull=GPIO_PULLUP;                        //??
        GPIO_Initure.Speed=GPIO_SPEED_HIGH;                //??
        GPIO_Initure.Alternate=GPIO_AF7_UART5;        //???USART2
        HAL_GPIO_Init(GPIOB,&GPIO_Initure);                   //???PA2,3

       
       
                GPIO_Initure.Pin=GPIO_PIN_14;
    GPIO_Initure.Mode=GPIO_MODE_OUTPUT_PP;  //íÆíìêä3ö
    GPIO_Initure.Pull=GPIO_PULLUP;          //éÏà-
    GPIO_Initure.Speed=GPIO_SPEED_HIGH;     //¸ßËù
    HAL_GPIO_Init(GPIOB,&GPIO_Initure);     //3õê¼
          HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,GPIO_PIN_RESET);       
       
    //USART ?????
       
        UART5_Handler.Instance=UART5;                                //USART2
        UART5_Handler.Init.BaudRate=bound;                        //???
        UART5_Handler.Init.WordLength=UART_WORDLENGTH_8B;        //???8?????
        UART5_Handler.Init.StopBits=UART_STOPBITS_1;                //?????
        UART5_Handler.Init.Parity=UART_PARITY_NONE;                //??????
        UART5_Handler.Init.HwFlowCtl=UART_HWCONTROL_NONE;        //?????
        UART5_Handler.Init.Mode=UART_MODE_TX_RX;                    //????
        HAL_UART_Init(&UART5_Handler);                                //HAL_UART_Init()???USART2

    __HAL_UART_CLEAR_IT(&UART5_Handler,UART_CLEAR_TCF);

        __HAL_UART_ENABLE_IT(&UART5_Handler,UART_IT_RXNE);//??????
        HAL_NVIC_EnableIRQ(UART5_IRQn);                                        //??USART1??
        HAL_NVIC_SetPriority(UART5_IRQn,3,3);                                //?????3,????3

    RS485_TX_Set(0);                                        //???????       

       

               
               
               
}
u8 rs485=0;
void UART5_IRQHandler(void)                       
{
        u8 Res;
        OSIntEnter();   
        if((__HAL_UART_GET_FLAG(&UART5_Handler,UART_FLAG_RXNE)!=RESET))  //½óêÕÖD¶Ï(½óêÕμ½μÄêy¾Y±ØDëêÇ0x0d 0x0a½áÎ2)
        {
        HAL_UART_Receive(&UART5_Handler,&rs485,1,1000);
                   
        }
        HAL_UART_IRQHandler(&UART5_Handler);       
        OSIntExit();                                                                                           
       

}



void rs485_send_data(u8 *buf,u8 len)
{
        RS485_TX_Set(1);               
    HAL_UART_Transmit(&UART5_Handler,buf,len,1000);
        RS485_TX_Set(0);                       
}









#ifndef _RS485_H
#define _RS485_H
#include "sys.h"
#define RS485_TX_Set(n)  (n?HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,GPIO_PIN_SET):HAL_GPIO_WritePin(GPIOB,GPIO_PIN_14,GPIO_PIN_RESET))
void RS485_Init(u32 bound);
//void HAL_UART5_MspInit(UART_HandleTypeDef *huart);

void rs485_send_data(u8 *buf,u8 len);
#endif











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

使用道具 举报

5

主题

15

帖子

0

精华

初级会员

Rank: 2

积分
152
金钱
152
注册时间
2015-12-5
在线时间
43 小时
 楼主| 发表于 2019-3-27 20:16:33 | 显示全部楼层
我这个代码发送发不出来,接收接收不到
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2019-3-28 01:38:12 | 显示全部楼层
先调试这个串口,能否正常通信
串口代码,参考我们例程的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
26
金钱
26
注册时间
2018-12-25
在线时间
5 小时
发表于 2019-3-28 13:25:24 | 显示全部楼层
正点原子 发表于 2019-3-28 01:38
先调试这个串口,能否正常通信
串口代码,参考我们例程的。

原子哥,问下如果硬件上没有USART,只有485可以用485的IO口来做串口调试么
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165536
金钱
165536
注册时间
2010-12-1
在线时间
2117 小时
发表于 2019-3-29 02:20:23 | 显示全部楼层
狱LOVE 发表于 2019-3-28 13:25
原子哥,问下如果硬件上没有USART,只有485可以用485的IO口来做串口调试么

不可能有单片机IO可以直接做485的,必定是串口转485
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

10

帖子

0

精华

新手入门

积分
15
金钱
15
注册时间
2019-3-30
在线时间
1 小时
发表于 2019-3-30 14:51:35 | 显示全部楼层
AL_RCC_GPIOB_CLK_ENABLE();  
www.tdszx.com
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-10 04:01

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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