OpenEdv-开源电子网

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

求助,dalay_ma(1000)不起作用

[复制链接]

20

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2016-10-26
在线时间
27 小时
发表于 2016-11-2 07:56:27 | 显示全部楼层 |阅读模式
3金钱
用STM32CubeMX生成了一个串口通讯的工程,使用的是USART1,并使用了两个LED。生成工程后,向工程中添加了System文件夹,并严格按照开发板说明书上的步骤进行操作,添加了相关的文件和头文件,然后在主函数中调用了延时函数delay_ma(1000),但是实际运行的时候,这个函数不会被执行,不知道为什么???





while (1)
  {
  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 阿波罗STM32F429开发板 串口实验\r\n");
                printf("正点原子@ALIENTEK\r\n\r\n\r\n");
            }
            if(times%200==0)printf("请输入数据,以回车键结束\r\n");  
            if(times%30==0)
                HAL_GPIO_TogglePin(GPIOB,GPIO_PIN_1);
            delay_ms(1000);      //这句话执行不了
        }
  }

最佳答案

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

解决了,因为少了一个初始化函数 delay_init(180),加上这个函数就好了
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

20

主题

33

帖子

0

精华

初级会员

Rank: 2

积分
86
金钱
86
注册时间
2016-10-26
在线时间
27 小时
 楼主| 发表于 2016-11-2 07:56:28 | 显示全部楼层
解决了,因为少了一个初始化函数  delay_init(180),加上这个函数就好了
回复

使用道具 举报

9

主题

538

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3371
金钱
3371
注册时间
2015-1-7
在线时间
794 小时
发表于 2016-11-2 08:11:41 | 显示全部楼层
设置优化等级为低试试
回复

使用道具 举报

58

主题

359

帖子

0

精华

高级会员

Rank: 4

积分
987
金钱
987
注册时间
2014-9-29
在线时间
261 小时
发表于 2016-11-2 08:28:19 | 显示全部楼层
你要用低级中断打断高级中断?改下优先级吧
回复

使用道具 举报

72

主题

2711

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3505
金钱
3505
注册时间
2014-8-4
在线时间
696 小时
发表于 2016-11-2 08:44:30 | 显示全部楼层
这段程序说明不了什么,你怎么证明没执行
回复

使用道具 举报

26

主题

280

帖子

1

精华

高级会员

Rank: 4

积分
908
金钱
908
注册时间
2013-8-2
在线时间
279 小时
发表于 2016-11-2 08:59:20 | 显示全部楼层
看我个性签名档的博客地址,《STM32之系统滴答定时器》
博客:http://blog.csdn.net/feilusia
CC2541群(127442605);CC2640群(557278427);
Android群(541462902);STM8/STM32群(164311667);
Linux群(512598061);职场交流群(450154342);
回复

使用道具 举报

7

主题

247

帖子

0

精华

高级会员

Rank: 4

积分
745
金钱
745
注册时间
2016-1-20
在线时间
78 小时
发表于 2016-11-2 13:07:56 | 显示全部楼层
优先级问题,delay使用的是最低的优先级。前段时间我把delay_ms放在我的定时器里面出现过不少假死机和莫名奇妙的错误。建议:如果对单片机中断优先级设置够熟悉,去改变优先级;如果自认为不熟悉,使用定时器来完成这个延时。
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-24 16:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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