OpenEdv-开源电子网

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

STM32F103 的RS485串口问题

[复制链接]

2

主题

12

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2017-8-22
在线时间
1 小时
发表于 2017-8-22 16:21:21 | 显示全部楼层 |阅读模式
1金钱
本帖最后由 xx3360765 于 2017-8-22 16:25 编辑

以下是我的代码程序烧录到板上后一点反应都没有,串口通讯助手也一点反应都没有。求解救。
/////////////usart.c#include "stm32f10x.h"#include "stm32f10x_gpio.h"#include "stm32f10x_rcc.h"#include "stm32f10x_usart.h"#include "misc.h"#include "usart.h"#define RS485_DIR_TX GPIO_WriteBit(GPIOA,GPIO_Pin_9,1);#define RS485_DIR_RX GPIO_WriteBit(GPIOA,GPIO_Pin_9,0);void USART1_Initial(void){        GPIO_InitTypeDef GPIO_InitStructure2;        USART_InitTypeDef USART_InitStructure;        NVIC_InitTypeDef NVIC_InitStructure;        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);      RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);  //????PA,USART1?????±??        GPIO_InitStructure2.GPIO_Pin = GPIO_Pin_9 ;    GPIO_InitStructure2.GPIO_Speed = GPIO_Speed_50MHz; //50M?±??????  GPIO_InitStructure2.GPIO_Mode = GPIO_Mode_Out_PP; //???ì????   GPIO_Init(GPIOA, &GPIO_InitStructure2);                GPIO_InitStructure2.GPIO_Pin = GPIO_Pin_10;          //485_TXD   GPIO_InitStructure2.GPIO_Speed = GPIO_Speed_50MHz;     GPIO_InitStructure2.GPIO_Mode = GPIO_Mode_AF_PP;  //???????ì????    GPIO_Init(GPIOA, &GPIO_InitStructure2);      GPIO_InitStructure2.GPIO_Pin = GPIO_Pin_11;           //485_RXD    GPIO_InitStructure2.GPIO_Mode = GPIO_Mode_IN_FLOATING; //????????   GPIO_Init(GPIOA, &GPIO_InitStructure2);                   NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//??????????3        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;                //×???????3        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                        //IRQ?¨??????        NVIC_Init(&NVIC_InitStructure);        //?ù?????¨????????????VIC?????÷                        USART_InitStructure.USART_BaudRate = 9600;             USART_InitStructure.USART_WordLength = USART_WordLength_8b;    USART_InitStructure.USART_StopBits = USART_StopBits_1;    USART_InitStructure.USART_Parity = USART_Parity_No;    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;    USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;    USART_Init(USART1, &USART_InitStructure);   USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//????????????????                USART_Cmd(USART1, ENABLE);                RS485_DIR_RX;}/////////////main.c#include "gpio.h"#include "usart.h"#include "stm32f10x.h"#include "stm32f10x_gpio.h"#include "stm32f10x_rcc.h"#include "stm32f10x_usart.h"int main(void){        SystemInit();    GPIO_Initial();        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);    USART1_Initial();                RS485_DIR_TX;   while(1)        {                                USART_SendData(USART1, 55);                        }}


最佳答案

查看完整内容[请看2#楼]

你确定usart1不是9和10,而是10和11?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

81

主题

1002

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1876
金钱
1876
注册时间
2014-9-10
在线时间
208 小时
发表于 2017-8-22 16:21:22 | 显示全部楼层
你确定usart1不是9和10,而是10和11?
小小蜗牛
回复

使用道具 举报

2

主题

12

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2017-8-22
在线时间
1 小时
 楼主| 发表于 2017-8-22 16:25:15 | 显示全部楼层
/////////////usart.c
#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_usart.h"
#include "misc.h"
#include "usart.h"
#define RS485_DIR_TX GPIO_WriteBit(GPIOA,GPIO_Pin_9,1);
#define RS485_DIR_RX GPIO_WriteBit(GPIOA,GPIO_Pin_9,0);

void USART1_Initial(void)
{
        GPIO_InitTypeDef GPIO_InitStructure2;
        USART_InitTypeDef USART_InitStructure;
        NVIC_InitTypeDef NVIC_InitStructure;
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_AFIO,ENABLE);   
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);  //????PA,USART1?????±??


        GPIO_InitStructure2.GPIO_Pin = GPIO_Pin_9 ;  
  GPIO_InitStructure2.GPIO_Speed = GPIO_Speed_50MHz; //50M?±??????
  GPIO_InitStructure2.GPIO_Mode = GPIO_Mode_Out_PP; //???ì????
  GPIO_Init(GPIOA, &GPIO_InitStructure2);  
  
         
  GPIO_InitStructure2.GPIO_Pin = GPIO_Pin_10;          //485_TXD
  GPIO_InitStructure2.GPIO_Speed = GPIO_Speed_50MHz;   
  GPIO_InitStructure2.GPIO_Mode = GPIO_Mode_AF_PP;  //???????ì????  
  GPIO_Init(GPIOA, &GPIO_InitStructure2);  
  
  GPIO_InitStructure2.GPIO_Pin = GPIO_Pin_11;           //485_RXD  
  GPIO_InitStructure2.GPIO_Mode = GPIO_Mode_IN_FLOATING; //????????
  GPIO_Init(GPIOA, &GPIO_InitStructure2);
       
       
  NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
        NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority=3 ;//??????????3
        NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3;                //×???????3
        NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;                        //IRQ?¨??????
        NVIC_Init(&NVIC_InitStructure);        //?ù?????¨????????????VIC?????÷
       
       
        USART_InitStructure.USART_BaudRate = 9600;           
  USART_InitStructure.USART_WordLength = USART_WordLength_8b;  
  USART_InitStructure.USART_StopBits = USART_StopBits_1;  
  USART_InitStructure.USART_Parity = USART_Parity_No;  
  USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;  
  USART_InitStructure.USART_Mode = USART_Mode_Tx | USART_Mode_Rx;  
  USART_Init(USART1, &USART_InitStructure);
  USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);//????????????????       
        USART_Cmd(USART1, ENABLE);
       
        RS485_DIR_RX;
}


/////////////main.c
#include "gpio.h"
#include "usart.h"
#include "stm32f10x.h"
#include "stm32f10x_gpio.h"
#include "stm32f10x_rcc.h"
#include "stm32f10x_usart.h"

int main(void)
{
   
    SystemInit();
    GPIO_Initial();
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
    USART1_Initial();
                RS485_DIR_TX;
   while(1)
        {
               
                USART_SendData(USART1, 55);
               
        }
}
回复

使用道具 举报

3

主题

111

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1085
金钱
1085
注册时间
2015-5-22
在线时间
607 小时
发表于 2017-8-22 16:28:11 | 显示全部楼层
回复

使用道具 举报

2

主题

12

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2017-8-22
在线时间
1 小时
 楼主| 发表于 2017-8-22 16:35:39 | 显示全部楼层
jiutianshenjian 发表于 2017-8-22 16:33
你确定usart1不是9和10,而是10和11?

是的,EN是9,TXD是10,RXD是11。原理图上这样画的,不知道怎么发图
回复

使用道具 举报

81

主题

1002

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1876
金钱
1876
注册时间
2014-9-10
在线时间
208 小时
发表于 2017-8-22 16:35:59 | 显示全部楼层
没看到你中断函数在哪里
小小蜗牛
回复

使用道具 举报

2

主题

12

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2017-8-22
在线时间
1 小时
 楼主| 发表于 2017-8-22 16:39:21 | 显示全部楼层
jiutianshenjian 发表于 2017-8-22 16:33
你确定usart1不是9和10,而是10和11?

我也很好奇,原理图不是我画的。
回复

使用道具 举报

81

主题

1002

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1876
金钱
1876
注册时间
2014-9-10
在线时间
208 小时
发表于 2017-8-22 16:39:58 | 显示全部楼层
你主函数里不停地的发送,那你怎么接收?
而且你不等上次发送完成再发吗?
小小蜗牛
回复

使用道具 举报

81

主题

1002

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1876
金钱
1876
注册时间
2014-9-10
在线时间
208 小时
发表于 2017-8-22 16:41:39 | 显示全部楼层
xx3360765 发表于 2017-8-22 16:39
我也很好奇,原理图不是我画的。

那你需要去确认下
小小蜗牛
回复

使用道具 举报

2

主题

12

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2017-8-22
在线时间
1 小时
 楼主| 发表于 2017-8-22 16:43:16 | 显示全部楼层
jiutianshenjian 发表于 2017-8-22 16:39
你主函数里不停地的发送,那你怎么接收?
而且你不等上次发送完成再发吗?

之前写了个很长的主函数,这个是测试串口有没有反应的,只要他有反应我就谢天谢地了。
回复

使用道具 举报

2

主题

12

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2017-8-22
在线时间
1 小时
 楼主| 发表于 2017-8-22 16:43:33 | 显示全部楼层

谢谢大佬,我去找他确认一下
回复

使用道具 举报

81

主题

1002

帖子

0

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
1876
金钱
1876
注册时间
2014-9-10
在线时间
208 小时
发表于 2017-8-22 16:47:27 | 显示全部楼层
本帖最后由 jiutianshenjian 于 2017-8-22 16:53 编辑
xx3360765 发表于 2017-8-22 16:43
谢谢大佬,我去找他确认一下
我也是学习
小小蜗牛
回复

使用道具 举报

2

主题

12

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2017-8-22
在线时间
1 小时
 楼主| 发表于 2017-8-22 17:30:41 | 显示全部楼层

是他画错了,搞了我好久。谢谢。
回复

使用道具 举报

4

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
51
金钱
51
注册时间
2017-8-23
在线时间
3 小时
发表于 2017-8-23 11:23:40 | 显示全部楼层
需要ST品牌的样品吗? 填一份扫IC网问卷可以得到三种ST任意型号的样品。 》》点击此处申请
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-20 19:47

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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