OpenEdv-开源电子网

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

stmf103串口实验串口助手没反应

[复制链接]

1

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
55
金钱
55
注册时间
2021-9-6
在线时间
8 小时
发表于 2022-4-22 15:17:31 | 显示全部楼层 |阅读模式
1金钱
#include "stm32f10x.h"                  // Device header

void USART1_Init(void)
{
        GPIO_InitTypeDef          GPIO_InitStruct;
        USART_InitTypeDef         USART_InitStruct;
        NVIC_InitTypeDef        NVIC_InitStruct;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
       
        GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
        GPIO_InitStruct.GPIO_Pin=GPIO_Pin_9;
        GPIO_Init(GPIOA,&GPIO_InitStruct);

        GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING;
        GPIO_InitStruct.GPIO_Pin=GPIO_Pin_10;
        GPIO_Init(GPIOA,&GPIO_InitStruct);

        USART_InitStruct.USART_BaudRate=115200;
        USART_InitStruct.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
        USART_InitStruct.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;
        USART_InitStruct.USART_Parity=USART_Parity_No;
        USART_InitStruct.USART_StopBits=USART_StopBits_1;
        USART_InitStruct.USART_WordLength=USART_WordLength_8b;
       
        USART_Init(USART1,&USART_InitStruct);
        USART_Cmd(USART1,ENABLE);                                                                                                //使能串口1
       
        USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);                                                        //开启中断
       
       
        NVIC_InitStruct.NVIC_IRQChannel=USART1_IRQn;
        NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
        NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=1;
        NVIC_InitStruct.NVIC_IRQChannelSubPriority=1;
        NVIC_Init(&NVIC_InitStruct);
}
void USART1_IRQHandler(void)
{
        u8 res;
        if(USART_GetITStatus(USART1,USART_IT_RXNE))
        {
               
                res=USART_ReceiveData(USART1);
                USART_SendData(USART1,res);
        }
}
int main()
{
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        USART1_Init();
        while(1)
        {
               
        }

}
代码跟原子哥的一样,为什么串口助手没有一点反应?请大佬指点

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

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2018-12-13
在线时间
1 小时
发表于 2022-5-9 21:37:44 | 显示全部楼层
#include "stm32f10x.h"  void USART1_Init(void) {   GPIO_InitTypeDef GPIO_InitStrue;         USART_InitTypeDef USART_InitStrue;         NVIC_InitTypeDef NVIC_InitStrue;                           //1¡¢ê1Äüê±Öó         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);   RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);         /*2¡¢IO¿ú3õê¼»ˉ*/         //Pin_9         GPIO_InitStrue.GPIO_Mode=GPIO_Mode_AF_PP;         GPIO_InitStrue.GPIO_Pin=GPIO_Pin_9;         GPIO_InitStrue.GPIO_Speed=GPIO_Speed_10MHz;         GPIO_Init(GPIOA,&GPIO_InitStrue);         //Pin_10         GPIO_InitStrue.GPIO_Mode=GPIO_Mode_IN_FLOATING;         GPIO_InitStrue.GPIO_Pin=GPIO_Pin_10;         GPIO_InitStrue.GPIO_Speed=GPIO_Speed_10MHz;         GPIO_Init(GPIOA,&GPIO_InitStrue);         /*3¡¢′®¿ú3õê¼»ˉ*/                  USART_InitStrue.USART_BaudRate=9600;         USART_InitStrue.USART_HardwareFlowControl=USART_HardwareFlowControl_None;         USART_InitStrue.USART_Mode=USART_Mode_Rx|USART_Mode_Tx;         USART_InitStrue.USART_Parity=USART_Parity_No;         USART_InitStrue.USART_StopBits=USART_StopBits_1;         USART_InitStrue.USART_WordLength=USART_WordLength_8b;                  USART_Init(USART1,&USART_InitStrue);         USART_Cmd(USART1,ENABLE);         USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);//¿aÆô½óêÕÖD¶Ï                           NVIC_InitStrue.NVIC_IRQChannel=USART1_IRQn;         NVIC_InitStrue.NVIC_IRQChannelCmd=ENABLE;         NVIC_InitStrue.NVIC_IRQChannelPreemptionPriority=1;         NVIC_InitStrue.NVIC_IRQChannelSubPriority=1;                           NVIC_Init(&NVIC_InitStrue);  }  void USART1_IRQHandler(void) {         u8 Rev_Byte_data;         if(USART_GetFlagStatus(USART1,USART_IT_RXNE))         {           Rev_Byte_data=USART_ReceiveData(USART1);                 USART_SendData(USART1,Rev_Byte_data);                  }  }   int main(void)  {                   NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);                    USART1_Init();                    while(1);                      }  
回复

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
6
金钱
6
注册时间
2018-12-13
在线时间
1 小时
发表于 2022-5-9 21:39:40 | 显示全部楼层
XCOM串口软件参数设置与程序一致,串口选择正确,串口操作位打开状态,测试正确。
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
4
金钱
4
注册时间
2021-12-15
在线时间
1 小时
发表于 2022-5-19 09:46:47 | 显示全部楼层
我和楼主同问,为什么和原子哥一模一样的代码,在串口助手发送数据到单片机,然后没有反应。怎么没有大牛帮帮回答呢?
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2022-5-21 01:18:25 | 显示全部楼层
帮顶
回复

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2022-7-18
在线时间
10 小时
发表于 2022-7-19 15:38:03 | 显示全部楼层
xiaoyuan077 发表于 2022-5-19 09:46
我和楼主同问,为什么和原子哥一模一样的代码,在串口助手发送数据到单片机,然后没有反应。怎么没有大牛帮 ...

我也是,有没有结果?
回复

使用道具 举报

54

主题

347

帖子

0

精华

高级会员

Rank: 4

积分
948
金钱
948
注册时间
2022-4-20
在线时间
356 小时
发表于 2022-7-22 17:16:58 | 显示全部楼层
uldencx 发表于 2022-7-19 15:38
我也是,有没有结果?

接个示波器看看发送引脚出波形没有
又菜又爱指点
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2022-7-25
在线时间
1 小时
发表于 2022-7-25 13:47:43 | 显示全部楼层
问题解决没?
回复

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
23
金钱
23
注册时间
2022-7-18
在线时间
10 小时
发表于 2022-7-27 12:31:09 | 显示全部楼层

看看波特率对不
回复

使用道具 举报

21

主题

217

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2123
金钱
2123
注册时间
2017-12-11
在线时间
460 小时
发表于 2022-7-27 12:47:28 | 显示全部楼层
看看是不是线的问题
回复

使用道具 举报

0

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2022-6-27
在线时间
8 小时
发表于 2022-8-1 17:31:46 | 显示全部楼层
本帖最后由 yaowan 于 2022-8-2 16:13 编辑

少写了一句 GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;                 //IO口速度为50MHz
测试:添加一句,LED_Init() 就可以运行,就发现是没加速度初始化造成的
回复

使用道具 举报

0

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
70
金钱
70
注册时间
2022-6-27
在线时间
8 小时
发表于 2022-8-2 15:46:32 | 显示全部楼层
本帖最后由 yaowan 于 2022-8-2 16:14 编辑

我运行了楼主的代码,真的无法通信
然后我发现,少写了一句
                GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;                 //IO口速度为50MHz

GPIO结构体有这个成员变量的,你没初始化输出速度,是无法通信的虽然有些可以不用初始化,但是还是建议尽量一次性写全
void GPIO_Init(GPIO_TypeDef* GPIOx, GPIO_InitTypeDef* GPIO_InitStruct)
{
  assert_param(IS_GPIO_ALL_PERIPH(GPIOx));   //GPIO
  assert_param(IS_GPIO_MODE(GPIO_InitStruct->GPIO_Mode)); //输入输出模式
  assert_param(IS_GPIO_PIN(GPIO_InitStruct->GPIO_Pin));  //初始化IO口
  assert_param(IS_GPIO_SPEED(GPIO_InitStruct->GPIO_Speed)); //速度
  }

具体如下:
void USART1_Init(void)
{
        GPIO_InitTypeDef        GPIO_InitStruct;
        USART_InitTypeDef       USART_InitStruct;
        NVIC_InitTypeDef        NVIC_InitStruct;
      
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);
      
        GPIO_InitStruct.GPIO_Mode=GPIO_Mode_AF_PP;
        GPIO_InitStruct.GPIO_Pin=GPIO_Pin_9;

        GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;                 //IO口速度为50MHz

        GPIO_Init(GPIOA,&GPIO_InitStruct);

        GPIO_InitStruct.GPIO_Mode=GPIO_Mode_IN_FLOATING;
        GPIO_InitStruct.GPIO_Pin=GPIO_Pin_10;
        GPIO_Init(GPIOA,&GPIO_InitStruct);

        USART_InitStruct.USART_BaudRate=115200;
        USART_InitStruct.USART_HardwareFlowControl=
                                                                        USART_HardwareFlowControl_None;
        USART_InitStruct.USART_Mode=USART_Mode_Tx|USART_Mode_Rx;
        USART_InitStruct.USART_Parity=USART_Parity_No;
        USART_InitStruct.USART_StopBits=USART_StopBits_1;
        USART_InitStruct.USART_WordLength=USART_WordLength_8b;      
        USART_Init(USART1,&USART_InitStruct);
                                                      
            
        NVIC_InitStruct.NVIC_IRQChannel=USART1_IRQn;
        NVIC_InitStruct.NVIC_IRQChannelCmd=ENABLE;
        NVIC_InitStruct.NVIC_IRQChannelPreemptionPriority=1;
        NVIC_InitStruct.NVIC_IRQChannelSubPriority=1;
        NVIC_Init(&NVIC_InitStruct);
      
        USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);               
                USART_Cmd(USART1,ENABLE);                   //开启中断                                                                             //使能串口1

}


回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165352
金钱
165352
注册时间
2010-12-1
在线时间
2108 小时
发表于 2022-8-3 23:29:49 | 显示全部楼层
帮顶
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
12
金钱
12
注册时间
2022-3-4
在线时间
2 小时
发表于 2022-8-16 23:51:32 | 显示全部楼层
噗噗,我就用原子哥视频附带的代码也没有反应,我看视频里头是用JLINK去下载程序,但我只用了一个USB,不知道会不会有影响?
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
8
金钱
8
注册时间
2023-6-12
在线时间
2 小时
发表于 2023-7-6 16:12:19 | 显示全部楼层
yaowan 发表于 2022-8-2 15:46
我运行了楼主的代码,真的无法通信
然后我发现,少写了一句
                GPIO_InitStruct.GPIO_Speed ...

我运行了你的代码,也无法通信!波特率:115200,停止位:1,数据位:8,校验位:none。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 06:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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