OpenEdv-开源电子网

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

卡在 delay_ms()函数

[复制链接]

23

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
314
金钱
314
注册时间
2015-1-25
在线时间
83 小时
发表于 2017-7-20 09:23:25 | 显示全部楼层 |阅读模式
10金钱
本帖最后由 neuangel 于 2017-7-20 09:24 编辑

int main(void)
{        
        signed char t;
        float v,temp_v,pro=0;
        float temperature,sd_size;
        u8 sd_gets[200];
        u8 temp,i,j;
        u8 direaction=1;
        u16 cnt;
        u8 mask=0;
        u16 ledpwm=0;
        u32 total,free;
        u8 USART2_TX_BUF[USART_TX_LENGHT]={0};
        u16 filesize;
        u16 adcx;
        
        delay_init();
        NVIC_Configuration();
        
        Usart_Init(115200);
        Usart2_Init(9600);
        Usart3_Init(115200);
        
        TIM6_Int_Init(99,7199);        //10ms        
        timer3_Init(4999,7199);//500 ms
        TIM5_PWM_Init(899,0);//72M/9000=8khz  
        TIM4_PWM_Init(7199,0);//72M/7200=10khz        

        sim900a_gpio_init();
        mem_init(SRAMIN);                //初始化内部内存池        
        exfuns_init();                //外部函数

        SD_CS=0;

        delay_ms(10);
/////////////////////////////////////////////////////////////////////////////////////////////////////
/*
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;            //************************************  运行到delay_ms()函数后就卡在这一步,过不去了
        }
        while(temp&0x01&&!(temp&(1<<16)));//等待时间到达   
        SysTick->CTRL&=~SysTick_CTRL_ENABLE_Msk;       //关闭计数器
        SysTick->VAL =0X00;       //清空计数器                     
}
#endif

*/
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

        sim900_tcp_init();

最佳答案

查看完整内容[请看2#楼]

我的是卡在 sim900a_gpio_init(); 这个函数写的不对,现在好了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

23

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
314
金钱
314
注册时间
2015-1-25
在线时间
83 小时
 楼主| 发表于 2017-7-20 09:23:26 | 显示全部楼层
阳光2260 发表于 2017-9-19 15:01
你好,楼主,请问这个问题你解决了没?我也遇到了相同的情况。

我的是卡在 sim900a_gpio_init();
这个函数写的不对,现在好了
回复

使用道具 举报

23

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
314
金钱
314
注册时间
2015-1-25
在线时间
83 小时
 楼主| 发表于 2017-7-20 09:26:29 | 显示全部楼层
本帖最后由 neuangel 于 2017-7-20 09:27 编辑

最开始先将 delay_init()函数初始化,之前写的程序也没问题,这次在测试sim900a时,加入delay_init()就会死循环,卡在 temp=SysTick->CTRL;  这一步,求大神给看看,没招了

delay_init(10)是我专门为测试加了一句代码,之前debug后就是卡在延时函数这里,加入后卡死了
回复

使用道具 举报

4

主题

349

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1046
金钱
1046
注册时间
2017-5-19
在线时间
335 小时
发表于 2017-7-20 10:25:00 | 显示全部楼层
这个延时函数一般是没问题的,可以试试把 delay_init()初始化函数放到不同位置试试
回复

使用道具 举报

23

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
314
金钱
314
注册时间
2015-1-25
在线时间
83 小时
 楼主| 发表于 2017-7-20 11:04:54 | 显示全部楼层
已经试了n次了,楼上的,不过还是谢谢
回复

使用道具 举报

23

主题

130

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
314
金钱
314
注册时间
2015-1-25
在线时间
83 小时
 楼主| 发表于 2017-7-20 17:55:23 | 显示全部楼层
换了一套最简单的串口接收发送程序,只要有delay_ms()函数就会卡在同一个地方,是不是片子坏了
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2017-7-21 01:03:46 | 显示全部楼层
学会仿真找问题
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

14

主题

79

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
411
金钱
411
注册时间
2017-6-12
在线时间
85 小时
发表于 2017-9-19 15:01:43 | 显示全部楼层
你好,楼主,请问这个问题你解决了没?我也遇到了相同的情况。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-6-18 10:46

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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