OpenEdv-开源电子网

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

给的资料串口通信只有USART1,我改成USART2,但是用不了,萌新快哭了

[复制链接]

2

主题

7

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2018-7-18
在线时间
6 小时
发表于 2019-3-9 12:56:26 | 显示全部楼层 |阅读模式
1金钱
void MYUSART2_Init2(u32 My_BaudRate)
{
        GPIO_InitTypeDef GPIO_InitStrue;
        USART_InitTypeDef USART_InitStrue;
        NVIC_InitTypeDef NVIC_InitStrue;
       
        // 外设使能时钟
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE);
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);
        USART_DeInit(USART2);  //复位串口2 -> 可以没有
       
        // 初始化 串口对应IO口  TX-PA2  RX-PA3
        GPIO_InitStrue.GPIO_Mode=GPIO_Mode_AF_PP;
        GPIO_InitStrue.GPIO_Pin=GPIO_Pin_2;
        GPIO_InitStrue.GPIO_Speed=GPIO_Speed_50MHz;
        GPIO_Init(GPIOA,&GPIO_InitStrue);
       
        GPIO_InitStrue.GPIO_Mode=GPIO_Mode_IN_FLOATING;
        GPIO_InitStrue.GPIO_Pin=GPIO_Pin_3;
  GPIO_Init(GPIOA,&GPIO_InitStrue);
       
        // 初始化 串口模式状态
        USART_InitStrue.USART_BaudRate=My_BaudRate; // 波特率
        USART_InitStrue.USART_HardwareFlowControl=USART_HardwareFlowControl_None; // 硬件流控制
        USART_InitStrue.USART_Mode=USART_Mode_Tx|USART_Mode_Rx; // 发送 接收 模式都使用
        USART_InitStrue.USART_Parity=USART_Parity_No; // 没有奇偶校验
        USART_InitStrue.USART_StopBits=USART_StopBits_1; // 一位停止位
        USART_InitStrue.USART_WordLength=USART_WordLength_8b; // 每次发送数据宽度为8位
        USART_Init(USART2,&USART_InitStrue);
       
        USART_Cmd(USART2,ENABLE);//使能串口
        USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);//开启接收中断
       
        // 初始化 中断优先级
        NVIC_InitStrue.NVIC_IRQChannel=USART2_IRQn;
        NVIC_InitStrue.NVIC_IRQChannelCmd=ENABLE;
        NVIC_InitStrue.NVIC_IRQChannelPreemptionPriority=1;
        NVIC_InitStrue.NVIC_IRQChannelSubPriority=1;
        NVIC_Init(&NVIC_InitStrue);
}

void USART2_IRQHandler(void) // 串口2中断服务函数
{
        u8 res;
        if(USART_GetITStatus(USART2,USART_IT_RXNE)) // 中断标志
{
     res= USART_ReceiveData(USART2);  // 串口2 接收
     USART_SendData(USART2,res);   // 串口2 发送
  }

}
int main(void)
{       
  NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
        MYUSART2_Init2(115200);
         while(1);
         
}

最佳答案

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

代码没问题,好好检查接线吧
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2019-3-9 12:56:27 | 显示全部楼层
代码没问题,好好检查接线吧
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2018-7-18
在线时间
6 小时
 楼主| 发表于 2019-3-9 13:08:22 | 显示全部楼层
nashui_sx 发表于 2019-3-9 13:05
代码没问题,好好检查接线吧

没有接线, 就那一块板子,要不然我试试USART3?
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2018-7-18
在线时间
6 小时
 楼主| 发表于 2019-3-9 13:30:17 | 显示全部楼层
有大佬知道为啥吗,正点原子精英版开发板,想用USART2进行通信,用的ATKXCOM(资料给的串口调试助手),把USART1改成USART2的就不行,没有反应
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2019-3-9 14:05:17 | 显示全部楼层
郭杰 发表于 2019-3-9 13:30
有大佬知道为啥吗,正点原子精英版开发板,想用USART2进行通信,用的ATKXCOM(资料给的串口调试助手),把U ...

代码没问题呀,你看看串口2是不是板子上接着别的,都断开
回复

使用道具 举报

31

主题

2183

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
14433
金钱
14433
注册时间
2018-8-3
在线时间
1157 小时
发表于 2019-3-9 15:13:22 | 显示全部楼层
你用XCOM的话 你串口二的IO接口有没有TTL转USB接到电脑呢
啊哈~加油!!
回复

使用道具 举报

57

主题

1680

帖子

3

精华

资深版主

Rank: 8Rank: 8

积分
4307
金钱
4307
注册时间
2018-6-30
在线时间
808 小时
发表于 2019-3-9 18:58:39 | 显示全部楼层
业精于勤荒于嬉;行成于思毁于随!
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2018-7-18
在线时间
6 小时
 楼主| 发表于 2019-3-9 20:31:21 | 显示全部楼层
nashui_sx 发表于 2019-3-9 14:05
代码没问题呀,你看看串口2是不是板子上接着别的,都断开

谢谢,知道怎么回事啦,板子的RX,TX用冒连着USART1。
回复

使用道具 举报

2

主题

7

帖子

0

精华

新手上路

积分
34
金钱
34
注册时间
2018-7-18
在线时间
6 小时
 楼主| 发表于 2019-3-9 20:49:13 | 显示全部楼层
1208 发表于 2019-3-9 18:58
参考这个串口4程序看下http://www.openedv.com/forum.php?mod=viewthread&tid=275324&extra=

谢谢,知道怎么回事啦,板子的RX,TX用冒连着USART1。
回复

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2019-3-9 21:03:31 | 显示全部楼层
郭杰 发表于 2019-3-9 20:49
谢谢,知道怎么回事啦,板子的RX,TX用冒连着USART1。

用开发板就是爱出现这种问题,用每个引脚都要检查板子上的接线,确认引脚不会被板子上的外设干扰再用

比如一个引脚外面接着iic 外部上拉了,你又用了这个按键根本不会出现低电平,

用开发板一定要养成这个检查习惯
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-23 21:16

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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