OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 6842|回复: 3

最近在调试ESP8266,一切都挺好,为什么总是进入delay_ms(),函数就出不来???

[复制链接]

5

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
179
金钱
179
注册时间
2014-8-29
在线时间
11 小时
发表于 2015-11-6 22:58:21 | 显示全部楼层 |阅读模式
5金钱
是在原子STM32F103开发板上面做的实验,
测试过,
执行完
GPIO_SetBits( GPIOA, GPIO_Pin_0 );
之后,进去
delay_ms(500);函数就出不来了,在do{}while里面死循环,出不来,Jlink调试是进入startup_stm32f10x_hd.s的324行,
后来换成了
GPIO_SetBits( GPIOE, GPIO_Pin_5 );,就没问题了..? PA0就是接KE_UP,这个在例程key.c文件里面也注释掉了,想不出问题的原因了.
这究竟是为什么啊??头文件也包含了,delay_init();   也初始化了,是什么原因导致我的delay_ms没办法顺利运行???


void delay_ms(u16 nms)
{                     
    u32 temp;           
    SysTick->LOAD=(u32)nms*fac_ms;//时间加载(SysTick->LOAD为24bit)
    SysTick->VAL =0x00;           //清空计数器
    SysTick->CTRL|=SysTick_CTRL_ENABLE_Msk ;          //开始倒数  
    do
    {
        temp=SysTick->CTRL;
    }
    while(temp&0x01&&!(temp&(1<<16)));//等待时间到达   
    SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;       //关闭计数器
    SysTick->VAL =0X00;       //清空计数器              
}

void ESP8266_Choose ( FunctionalState enumChoose )
{
    if ( enumChoose == ENABLE )
    {
        delay_ms(500);            //OK,程序没问题
        GPIO_SetBits( GPIOA, GPIO_Pin_0 );
        delay_ms(500);          //出问题了,在do{}while里面出不来
    }
    else
        ESP8266_CH_LOW_LEVEL();
}

bool ESP8266_Cmd ( char * cmd, char * reply1, char * reply2, u16 waittime )
{    
    strEsp8266_Fram_Record .InfBit .FramLength = 0;               //从新开始接收新的数据包

    ESP8266_Usart ( "%s\r\n", cmd );                             //用串口2发送的指令

    if ( ( reply1 == 0 ) && ( reply2 == 0 ) )                      //不需要接收数据
        return true;
    
    delay_ms(waittime);                 //延时,这里又跳不出去了
    
    strEsp8266_Fram_Record .Data_RX_BUF [ strEsp8266_Fram_Record .InfBit .FramLength ]  = '\0';

    C_Usart ( "%s", strEsp8266_Fram_Record .Data_RX_BUF );
 
    if ( ( reply1 != 0 ) && ( reply2 != 0 ) )
        return ( ( bool ) strstr ( strEsp8266_Fram_Record .Data_RX_BUF, reply1 ) ||
                         ( bool ) strstr ( strEsp8266_Fram_Record .Data_RX_BUF, reply2 ) );
     
    else if ( reply1 != 0 )
        return ( ( bool ) strstr ( strEsp8266_Fram_Record .Data_RX_BUF, reply1 ) );
    
    else
        return ( ( bool ) strstr ( strEsp8266_Fram_Record .Data_RX_BUF, reply2 ) );
    
}

有深圳的大牛带我飞吗?
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-11-8 22:51:42 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

5

主题

49

帖子

0

精华

初级会员

Rank: 2

积分
179
金钱
179
注册时间
2014-8-29
在线时间
11 小时
 楼主| 发表于 2015-11-9 00:13:01 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
在main主函数初始化了延时函数,
今天早上检查了一下,是我忘记包含头文件stm32f10x.it.c,然后串口2的中断函数写在里面,而PA0是usart2_CTS,
所以我Gpio_setbits A0之后,delay函数用不了.还没修改代码,不过我猜应该是这里发生问题~~~
有深圳的大牛带我飞吗?
回复

使用道具 举报

1

主题

11

帖子

0

精华

初级会员

Rank: 2

积分
129
金钱
129
注册时间
2017-6-28
在线时间
28 小时
发表于 2019-7-31 10:45:40 | 显示全部楼层
你延时太久了,手册说最多不超过15ms,而且要随时喂狗。
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 22:05

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表