OpenEdv-开源电子网

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

在测试串口收发程序时,为什么在主程序中加延时,会导致死机?

[复制链接]

4

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2019-12-9
在线时间
40 小时
发表于 2020-5-8 17:16:29 | 显示全部楼层 |阅读模式
我用的原子哥的F407探索者开发板,串口收发程序原封不动测试没有问题。
当我在主循环中while(1)后加入一条200ms的延时后,再测试收发,很快就会死机。
而且奇怪的是,延时再短些(比如100ms)或者再长些(比如1000ms)都不容易死机。
这个到底是什么原因呢?哪位高手知道?

微信截图_20200508170823.png
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

0

主题

70

帖子

0

精华

初级会员

Rank: 2

积分
72
金钱
72
注册时间
2019-7-11
在线时间
1 小时
发表于 2020-5-8 17:17:19 | 显示全部楼层
回复 支持 1 反对 0

使用道具 举报

0

主题

60

帖子

0

精华

初级会员

Rank: 2

积分
63
金钱
63
注册时间
2018-12-27
在线时间
0 小时
发表于 2020-5-8 17:16:29 | 显示全部楼层
技术不行,没办法帮到楼主,只能帮顶以表支持......
回复 支持 反对

使用道具 举报

4

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2019-12-9
在线时间
40 小时
 楼主| 发表于 2020-5-8 17:18:03 | 显示全部楼层
来自星球的Mao 发表于 2020-5-8 17:16
技术不行,没办法帮到楼主,只能帮顶以表支持......

秒回,多谢!
回复 支持 反对

使用道具 举报

15

主题

1061

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
3623
金钱
3623
注册时间
2019-8-14
在线时间
1054 小时
发表于 2020-5-8 18:05:48 | 显示全部楼层
测试了一下,并没有你说的情况出现
回复 支持 反对

使用道具 举报

4

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2019-12-9
在线时间
40 小时
 楼主| 发表于 2020-5-8 21:52:59 | 显示全部楼层
hou18 发表于 2020-5-8 18:05
测试了一下,并没有你说的情况出现

那好奇怪呀,我这边一直都死机!
回复 支持 反对

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2020-5-9 09:26:44 | 显示全部楼层
jiyuehua1023 发表于 2020-5-8 21:52
那好奇怪呀,我这边一直都死机!

上传工程吧,估计别的问题
回复 支持 反对

使用道具 举报

4

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2019-12-9
在线时间
40 小时
 楼主| 发表于 2020-5-9 16:35:33 | 显示全部楼层
nashui_sx 发表于 2020-5-9 09:26
上传工程吧,估计别的问题

就是原例程,就加了一句延时,别的都没动。
回复 支持 反对

使用道具 举报

51

主题

2166

帖子

2

精华

论坛元老

Rank: 8Rank: 8

积分
10653
金钱
10653
注册时间
2017-4-14
在线时间
2780 小时
发表于 2020-5-9 18:40:24 | 显示全部楼层
jiyuehua1023 发表于 2020-5-9 16:35
就是原例程,就加了一句延时,别的都没动。

那是不可能的事,所以说你上传你出错的这个工程
回复 支持 反对

使用道具 举报

4

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2019-12-9
在线时间
40 小时
 楼主| 发表于 2020-5-11 17:40:22 | 显示全部楼层
nashui_sx 发表于 2020-5-9 18:40
那是不可能的事,所以说你上传你出错的这个工程

这网站还不支持.7Z类型,我给改成.rar了。
回复 支持 反对

使用道具 举报

4

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2019-12-9
在线时间
40 小时
 楼主| 发表于 2020-5-11 17:41:15 | 显示全部楼层
jiyuehua1023 发表于 2020-5-11 17:40
这网站还不支持.7Z类型,我给改成.rar了。

传了附件了,但是却看不到,咋回事?
回复 支持 反对

使用道具 举报

4

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2019-12-9
在线时间
40 小时
 楼主| 发表于 2020-5-11 17:42:41 | 显示全部楼层
再传一次附件试试!

回复 支持 反对

使用道具 举报

4

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2019-12-9
在线时间
40 小时
 楼主| 发表于 2020-5-12 08:11:13 | 显示全部楼层
微信截图_20200512080931.png
上传附件后,没有显示文件名,点击插入全部附件也没反应。换成IE浏览器也不行,太难用了
回复 支持 反对

使用道具 举报

4

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2019-12-9
在线时间
40 小时
 楼主| 发表于 2020-5-12 08:13:27 | 显示全部楼层
反正就是这个串口测试工程,除了加了一句延时,别的我都没动。


#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "key.h"
/************************************************
ALIENTEK 探索者STM32F407开发板 实验4
串口实验-HAL库函数版
技术支持:www.openedv.com
淘宝店铺:http://eboard.taobao.com
关注微信公众平台微信号:"正点原子",免费获取STM32资料。
广州市星翼电子科技有限公司  
作者:正点原子 @ALIENTEK
************************************************/

int main(void)
{
        u8 len;       
        u16 times=0;
       
    HAL_Init();                            //初始化HAL库   
    Stm32_Clock_Init(336,8,2,7);          //设置时钟,168Mhz
        delay_init(168);                       //初始化延时函数
        uart_init(115200);              //初始化USART
        LED_Init();                                                //初始化LED       
    KEY_Init();                     //初始化按键
        printf("F407串口试验:\r\n");
    while(1)
    {       
                        delay_ms(200);//此处加了句延时后,收发一会儿会死机!
                        if(USART_RX_STA&0x8000)
                        {                                          
                                len=USART_RX_STA&0x3fff;//得到此次接收到的数据长度
                                printf("\r\n您发送的消息为:\r\n");
                                HAL_UART_Transmit(&UART1_Handler,(uint8_t*)USART_RX_BUF,len,1000);        //发送接收到的数据
                                while(__HAL_UART_GET_FLAG(&UART1_Handler,UART_FLAG_TC)!=SET);                //等待发送结束
                                printf("\r\n\r\n");//插入换行
                                USART_RX_STA=0;
                        }else
                        {
                                times++;
                                if(times%5000==0)
                                {
                                        printf("\r\nALIENTEK 探索者STM32F407开发板 串口实验\r\n");
                                        printf("正点原子@ALIENTEK\r\n\r\n\r\n");
                                }
                                if(times%200==0)printf("请输入数据,以回车键结束\r\n");  
                                if(times%30==0) LED1=!LED1;//闪烁LED,提示系统正在运行.
                                delay_ms(10);   
                        }
    }
}

回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-1 23:18

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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