swenbalan 发表于 2019-6-10 10:57:57

STM32F030F4的USART通信问题

本帖最后由 swenbalan 于 2019-6-10 11:20 编辑

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

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

void USART1_Init(uint32_t baud)
{
    GPIO_InitTypeDef GPIO_InitStructure;
    USART_InitTypeDef USART_InitStructure;
    NVIC_InitTypeDef NVIC_InitStruct;
   
    RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);//使能GPIOA的时钟
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);//使能USART的时钟
    USART_DeInit(USART1);
    /* USART1的端口配置 */
    GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_1);//配置PA9成第二功能引脚    TX
    GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_1);//配置PA10成第二功能引脚RX   

/*
*USART1_TX -> PA9 , USART1_RX -> PA10
*/               
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_9;            
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
//GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);         

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_10;            
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
//GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStructure);
    /* USART1的基本配置 */
    USART_InitStructure.USART_BaudRate = baud;            //波特率
    USART_InitStructure.USART_WordLength = USART_WordLength_8b;
    USART_InitStructure.USART_StopBits = USART_StopBits_1;
    USART_InitStructure.USART_Parity = USART_Parity_No;
    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

    USART_Init(USART1, &USART_InitStructure);      
    USART_ITConfig(USART1,USART_IT_RXNE,ENABLE);         //使能接收中断
    USART_ITConfig(USART1, USART_IT_TXE, DISABLE);
    USART_ClearFlag(USART1,USART_FLAG_TC);
    USART_Cmd(USART1, ENABLE);                           //使能USART1
   
    /* USART1的NVIC中断配置 */
    NVIC_InitStruct.NVIC_IRQChannel = USART1_IRQn;
    NVIC_InitStruct.NVIC_IRQChannelPriority = 0x02;
    NVIC_InitStruct.NVIC_IRQChannelCmd = ENABLE;
    NVIC_Init(&NVIC_InitStruct);
}


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


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

大虾们有什么建议没?


swenbalan 发表于 2019-6-10 13:27:07

怎么审查这么久,别人的都通过了?

jeffhe1 发表于 2019-6-10 18:08:55

先用串口 跟 usart1 溝通看看 , 看能不能通 ?
接著看 baudRate 跟 wifi module 是否依樣 ?
應該可以下簡單 AT cmd , 看有沒有回應 ?
:o

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

请问一下,怎么解决的,我也碰到了类似问题
页: [1]
查看完整版本: STM32F030F4的USART通信问题