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

STM32F030F4的USART通信问题

[复制链接]
swenbalan 提问时间:2019-6-10 10:57 /
本帖最后由 swenbalan 于 2019-6-10 11:20 编辑

刚刚开始搞st32的芯片,现在意图用STM32F030F4的小板子外接T公司的wifi模块完成数据收发和处理。
工作流程很简单,板子通电后wifi模块会不断发送数据包;板子端收到数据包后通过一系列处理,把处理好的数据包返还给wifi模块。

现在的问题是wifi模块从USART1进不来数据,不晓得是不是代码的配置问题。
网上看了很多配置方法,自认为配置应该没有问题。
我的USART1配置代码如下:

  1. void USART1_Init(uint32_t baud)
  2. {
  3.     GPIO_InitTypeDef GPIO_InitStructure;
  4.     USART_InitTypeDef USART_InitStructure;
  5.     NVIC_InitTypeDef NVIC_InitStruct;
  6.    
  7.     RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);  //使能GPIOA的时钟
  8.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);//使能USART的时钟
  9.     USART_DeInit(USART1);
  10.     /* USART1的端口配置 */
  11.     GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_1);//配置PA9成第二功能引脚    TX
  12.     GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_1);//配置PA10成第二功能引脚  RX   

  13.   /*
  14.   *  USART1_TX -> PA9 , USART1_RX -> PA10
  15.   */               
  16.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;            
  17.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
  18.   //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  19.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;  
  20.   GPIO_Init(GPIOA, &GPIO_InitStructure);           
  21.   
  22.   GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;            
  23.   GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;  
  24.   //GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
  25.   GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
  26.   GPIO_Init(GPIOA, &GPIO_InitStructure);
  27.     /* USART1的基本配置 */
  28.     USART_InitStructure.USART_BaudRate = baud;              //波特率
  29.     USART_InitStructure.USART_WordLength = USART_WordLength_8b;
  30.     USART_InitStructure.USART_StopBits = USART_StopBits_1;
  31.     USART_InitStructure.USART_Parity = USART_Parity_No;
  32.     USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
  33.     USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

  34.     USART_Init(USART1, &USART_InitStructure);        
  35.     USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);           //使能接收中断
  36.     USART_ITConfig(USART1, USART_IT_TXE, DISABLE);
  37.     USART_ClearFlag(USART1,USART_FLAG_TC);
  38.     USART_Cmd(USART1, ENABLE);                             //使能USART1
  39.    
  40.     /* USART1的NVIC中断配置 */
  41.     NVIC_InitStruct.NVIC_IRQChannel = USART1_IRQn;
  42.     NVIC_InitStruct.NVIC_IRQChannelPriority = 0x02;
  43.     NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
  44.     NVIC_Init(&NVIC_InitStruct);
  45. }
复制代码



跑起来后第一次进到中断USART1_IRQHandler时,recieve回来的RDR是0.USART的数据截图如下(内存地址也是正确的):
USART.jpg

WIFI模块已证实没有问题,用另外一块stm32F1的板子已经成功通信。硬件连接照说也没有问题,都是很简单的连接,万用表也测过。

大虾们有什么建议没?


收藏 评论4 发布时间:2019-6-10 10:57

举报

4个回答
swenbalan 回答时间:2019-6-10 13:27:07
怎么审查这么久,别人的都通过了?
jeffhe1 回答时间:2019-6-10 18:08:55
先用串口 跟 usart1 溝通看看 , 看能不能通 ?
接著看 baudRate 跟 wifi module 是否依樣 ?
應該可以下簡單 AT cmd , 看有沒有回應 ?

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

swenbalan 回答时间:2019-6-11 09:19:53
jeffhe1 发表于 2019-6-10 18:08
先用串口 跟 usart1 溝通看看 , 看能不能通 ?
接著看 baudRate 跟 wifi module 是否依樣 ?
應該可以下簡單 ...

波特率等的参数设置没有问题的。

我拿TTL工具试试,anyway,谢谢你。
kinto 回答时间:2019-11-24 15:58:03
请问一下,怎么解决的,我也碰到了类似问题
关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版