2381|3

3243

帖子

0

TA的资源

纯净的硅(高级)

楼主
 

GPRS数据发不出去 [复制链接]






主程序




我用的是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);
请高手指教,怎么解决?谢谢!


此帖出自stm32/stm8论坛

最新回复

你串口初始化不正常,时钟开错了 rcc_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |RCC_APB1Periph_USART2 |RCC_APB2Periph_AFIO, ENABLE); 要这样: rcc_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);  详情 回复 发表于 2017-11-14 15:30
点赞 关注
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 

回复
举报

3243

帖子

0

TA的资源

纯净的硅(高级)

沙发
 
插了SIM卡也不行。
此帖出自stm32/stm8论坛
 
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 

回复

4008

帖子

0

TA的资源

版主

板凳
 
你串口初始化不正常,时钟开错了
rcc_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB |RCC_APB1Periph_USART2 |RCC_APB2Periph_AFIO, ENABLE);
要这样:
rcc_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);
此帖出自stm32/stm8论坛

点评

非常感谢,好了。  详情 回复 发表于 2017-11-14 15:43
 
 

回复

3243

帖子

0

TA的资源

纯净的硅(高级)

4
 
huo_hu 发表于 2017-11-14 15:30
你串口初始化不正常,时钟开错了
rcc_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | ...

非常感谢,好了。
此帖出自stm32/stm8论坛
 
个人签名为江山踏坏了乌骓马,为社稷拉断了宝雕弓。
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表