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

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管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版