你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32f407串口2程序问题,不能正常运行

[复制链接]
枫寒。 提问时间:2017-10-8 21:18 /
  1. void usart2_Init(u32 bound)
  2. {
  3.         GPIO_InitTypeDef GPIO_InitStuer;
  4.         USART_InitTypeDef USART_InitStuer;
  5.         NVIC_InitTypeDef NVIC_InitStuer;
  6.        
  7.         RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE); //ʹÄÜGPIOAʱÖÓ
  8.         RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE);//ʹÄÜUSART2ʱÖÓ
  9.        
  10.         GPIO_PinAFConfig(GPIOA,GPIO_PinSource2,GPIO_AF_USART2); //GPIOA2¸´ÓÃΪUSART2
  11.         GPIO_PinAFConfig(GPIOA,GPIO_PinSource3,GPIO_AF_USART2); //GPIOA3¸´ÓÃΪUSART2
  12.        
  13.         GPIO_InitStuer.GPIO_Mode=GPIO_Mode_AF;
  14.         GPIO_InitStuer.GPIO_OType=GPIO_OType_PP;
  15.         GPIO_InitStuer.GPIO_Pin=GPIO_Pin_2 | GPIO_Pin_3;
  16.         GPIO_InitStuer.GPIO_PuPd=GPIO_PuPd_UP;
  17.         GPIO_InitStuer.GPIO_Speed=GPIO_Speed_100MHz;
  18.         GPIO_Init(GPIOA,&GPIO_InitStuer);
  19.        
  20.         USART_InitStuer.USART_BaudRate=bound;
  21.         USART_InitStuer.USART_HardwareFlowControl=USART_HardwareFlowControl_None;
  22.         USART_InitStuer.USART_Mode= USART_Mode_Rx | USART_Mode_Tx;
  23.         USART_InitStuer.USART_Parity=USART_Parity_No;     //ÎÞÆæÅ¼Ð£Ñéλ
  24.         USART_InitStuer.USART_StopBits=USART_StopBits_1;   //ÎÞÓ²¼þÁ÷¿ØÖÆ
  25.         USART_InitStuer.USART_WordLength=USART_WordLength_8b;
  26.         USART_Init(USART2,&USART_InitStuer);
  27.        
  28.         NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
  29.        
  30.         NVIC_InitStuer.NVIC_IRQChannel=USART2_IRQn;
  31.         NVIC_InitStuer.NVIC_IRQChannelCmd=ENABLE;
  32.         NVIC_InitStuer.NVIC_IRQChannelPreemptionPriority=2;
  33.         NVIC_InitStuer.NVIC_IRQChannelSubPriority=2;
  34.         NVIC_Init(&NVIC_InitStuer);
  35.        
  36.         USART_ITConfig(USART2,USART_IT_RXNE,ENABLE);     //½ÓÊÜÖжÏ
  37.         USART_Cmd(USART2,ENABLE);    //ʹÄÜ´®¿Ú2
  38. }
复制代码
来帮忙找找错误吧,程序看着没有问题啊。

主函数发送0x11电脑都收不到。
  1. USART_SendData(USART2,0x11);
  2.                         while(USART_GetFlagStatus(USART2,USART_FLAG_TXE) != RESET);
复制代码
不清楚,有能帮忙检查下的嘛。
多谢了
收藏 评论6 发布时间:2017-10-8 21:18

举报

6个回答
MrJiu 回答时间:2017-10-9 09:23:38
1、使用cube配置
2、用示波器查看波形。。。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

枫寒。 回答时间:2017-10-9 13:15:46
不会使用cube。。。。程序应该是没有问题吧
衔胆栖冰 回答时间:2017-10-9 20:28:23
GPIO_InitStuer.GPIO_Pin=GPIO_Pin_2 | GPIO_Pin_3;
GPIO_InitStuer.GPIO_PuPd=GPIO_PuPd_UP;
初始化发送IO复用推挽输出,接收IO复用浮空输入。

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

枫寒。 回答时间:2017-10-9 20:49:50
衔胆栖冰 发表于 2017-10-9 20:28
GPIO_InitStuer.GPIO_Pin=GPIO_Pin_2 | GPIO_Pin_3;
GPIO_InitStuer.GPIO_PuPd=GPIO_PuPd_UP;
初始化发送IO ...

F4的配置和F1的一样吗。我看的F4例程里面给的是发送和接受都是复用推挽
衔胆栖冰 回答时间:2017-10-10 09:16:07
请参考官方标准库demo

官方demo串口初始化

官方demo串口初始化


回答时间:2017-10-10 09:51:33
  1. RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA,ENABLE);
  2.                 GPIO_PinAFConfig(GPIOA, GPIO_PinSource2, GPIO_AF_USART2);
  3.                 GPIO_PinAFConfig(GPIOA, GPIO_PinSource3, GPIO_AF_USART2);
  4.                
  5.                 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2 | GPIO_Pin_3;
  6.                 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  7.                 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;       
  8.                 GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
  9.                 GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;
  10.                 GPIO_Init(GPIOA,&GPIO_InitStructure);
复制代码
上面代码我测试没问题,楼主可以仿真一下配置完成后,串口寄存器的值、IO寄存器的值、系统时钟寄存器的值。另外看一下电路板实际使用的IO口。
电脑RX接MCUTX,TX接MCURX

评分

参与人数 1ST金币 +2 收起 理由
zero99 + 2

查看全部评分

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版