GPRS数据发不出去

2019-03-23 17:23发布

3.png
4.png
5.png
6.png
7.png
主程序




我用的是STM32F103C8T6,驱动SIM800C。
原来程序是好的。后来改了硬件,如图
增加了DTR和STATUS。我查了查手册,感觉这两个脚没有什么大的影响。
程序如下:
主程序



void GPIOForGSMInit(void)
{
       
        GPIO_InitTypeDef GPIO_InitTypeDefStruct;
        NVIC_InitTypeDef NVIC_InitStructure;
        USART_InitTypeDef USART_InitTypeDefStruct;
       
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |RCC_APB1Periph_USART2 |RCC_APB2Periph_AFIO, ENABLE);
       
        GPIO_InitTypeDefStruct.GPIO_Mode = GPIO_Mode_AF_PP;
        GPIO_InitTypeDefStruct.GPIO_Speed = GPIO_Speed_2MHz;
        GPIO_InitTypeDefStruct.GPIO_Pin = GPIO_Pin_2;
        GPIO_Init(GPIOA , &GPIO_InitTypeDefStruct);                                                                        //TXDòy½Å3õê¼»ˉ
       
        GPIO_InitTypeDefStruct.GPIO_Mode = GPIO_Mode_IN_FLOATING;
        GPIO_InitTypeDefStruct.GPIO_Pin = GPIO_Pin_3;
        GPIO_Init(GPIOA , &GPIO_InitTypeDefStruct);                                                                        //RXDòy½Å3õê¼»ˉ
       
        GPIO_InitTypeDefStruct.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitTypeDefStruct.GPIO_Speed = GPIO_Speed_2MHz;
        GPIO_InitTypeDefStruct.GPIO_Pin = GPIO_Pin_1|GPIO_Pin_7;
        GPIO_Init(GPIOB , &GPIO_InitTypeDefStruct);                                                                        //PWRKEYòy½Å3õê¼»ˉ
       
       
       
        USART_InitTypeDefStruct.USART_BaudRate = 115200;                                                                                                                                                //2¨ìØÂê2Îêy
        USART_InitTypeDefStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;        //ó2¼tá÷¿ØÖÆ
        USART_InitTypeDefStruct.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;                                                                        //ÅäÖÃ′®¿úģ꽣¬Ôú′ËÎaè«Ë«1¤Ä£ê½
        USART_InitTypeDefStruct.USART_Parity = USART_Parity_No;                                                                                                                        //D£Ñéλ2Îêy
        USART_InitTypeDefStruct.USART_StopBits = USART_StopBits_1;                                                                                                        //í£Ö1λ2Îêy
        USART_InitTypeDefStruct.USART_WordLength = USART_WordLength_8b;                                                                                        //êy¾Yλ2Îêy
        USART_Init(USART2 , &USART_InitTypeDefStruct);                                                                                                                                                        //3õê¼»ˉ¿aoˉêy
        USART_ITConfig(USART2, USART_IT_RXNE, ENABLE);                                                                                                                                                        //½óêÕÖD¶Ïê1Äü
        USART_Cmd(USART2 , ENABLE);                                                                                                                                                                                                                                        //ê1Äü¿ØÖÆ
        USART_GetFlagStatus(USART2,USART_FLAG_TC);
       
        GPIO_SetBits(GPIOB , GPIO_Pin_1);                                                                                                        //à-¸ßPWRKEYòy½Å
        GPIO_ResetBits(GPIOB , GPIO_Pin_7);                                                                                                        //UART_DTR                       
       
        NVIC_PriorityGroupConfig(NVIC_PriorityGroup_1);
        NVIC_InitStructure.NVIC_IRQChannel = USART2_IRQn;
  NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;                //ÇàÕ¼óÅÏ輶1
  NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;                                         //Ïìó|óÅÏ輶0
  NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
  NVIC_Init(&NVIC_InitStructure);
       
        AT;       
        CPOWD;//1Ø»ú       
        ms_delay(1000);       
        //PWRForGSMSleep();
}

void Uart2_SendByte(u8 Data)
{
                USART_SendData(USART2 , Data);               
                while(USART_GetFlagStatus(USART2 , USART_FLAG_TC) != SET);//μè′y·¢Ëííê±Ï
}
void Uart2_SendString(u8 *s,u8 lengh)
{
        u8 i;
        for(i = 0 ; i < lengh ; i++)
        {
                USART_SendData(USART2 , *s++);               
                while(USART_GetFlagStatus(USART2 , USART_FLAG_TC) != SET);//μè′y·¢Ëííê±Ï
        }
}

程序死在这一句:
while(USART_GetFlagStatus(USART2 , USART_FLAG_TC) != SET);
请高手指教,怎么解决?谢谢!


此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。