Toggle navigation
首页
问答
文章
积分商城
专家
专区
更多专区...
文档中心
返回主站
搜索
提问
会员
中心
登录
注册
keil_MDK
编译优化
软定时器
KEIL环境开启3级优化,连续启动两个软件定时器,后启动的定时器无法正常运行
发布于 2021-08-18 10:53:42 浏览:847
订阅该版
[tocm] 在产品开发中遇到一个问题: 使用KEIL环境并开启3级优化,然后创建两个软件定义器并连续启动它们,后启动的软件定时器无法正常运行。 其中方框1处为定时器2的启动函数,方框2内为两个软件定时器的初始化函数,方框3处为两个定时器连续启动操作,调试过程中发现,先启动的定时器1正常运行,后启动的定时器2无法正常运行。 ## 做过以下尝试: - (1)优化级别改为0,两个定时器都正常。 - (2)保持优化级别为3,将func_test内的语句直接放在定时器1初始化后运行,两个定时器都正常。 - (3)保持优化级别为3,将func_test内的修改定时器2时间的语句注释掉,两个定时器都正常。 目前得出的结论是与优化有一定关系,但具体原因还不明白,不知是否和rtt的某些特性有关?期望得到大家的指点,谢谢! ![微信截图_20210818105644.png](https://oss-club.rt-thread.org/uploads/20210818/ea86f25ceb43493b310eb34a7833eceb.png)
查看更多
出出啊
2021-08-18
恃人不如自恃,人之为己者不如己之自为也
1. 图片没显示,贴代码吧。 2. 增加几个线程栈试试,核查所有线程栈,别小于512
3
个回答
默认排序
按发布时间排序
zhaohuiqazx
2021-08-18
这家伙很懒,什么也没写!
图片发不出来,补上代码 ```c void fun_test(void) { uint16_t delay_temp = 1000; rt_timer_control(&display_symble_blink_timer2_tcb, RT_TIMER_CTRL_SET_TIME, &delay_temp); rt_timer_start(&display_symble_blink_timer2_tcb); } void display_init(void) { display_symble_blink_mode = Blink_Mode_NONE; display_symble_blink_state = 1; rt_timer_init(&display_symble_blink_timer_tcb, // 显示符号闪烁定时器 "display_symble_blink_timer", display_symble_blink_timer, RT_NULL, 1000, RT_TIMER_FLAG_PERIODIC | RT_TIMER_FLAG_SOFT_TIMER); rt_timer_init(&display_symble_blink_timer2_tcb, // 显示符号闪烁定时器 "display_symble_blink_timer2", display_symble_blink_timer2, RT_NULL, 1000, RT_TIMER_FLAG_PERIODIC | RT_TIMER_FLAG_SOFT_TIMER); rt_timer_start(&display_symble_blink_timer_tcb); fun_test(); // uint16_t delay_temp = 1000; // rt_timer_control(&display_symble_blink_timer2_tcb, RT_TIMER_CTRL_SET_TIME, &delay_temp); // rt_timer_start(&display_symble_blink_timer2_tcb); } ```
cxhxy12345
2021-08-18
这家伙很懒,什么也没写!
这里调用rt_timer_control的设置函数是希望对timer2重新进行参数设置? keil的优化等级说明如下: 0 近乎不优化,用于调试代码。出现代码行不能设置断点可如此设置试试。 1 部分优化。移除未调用的内联函数和静态函数,关闭debug窗口优化,此状态也能用于调试 2 默认优化等级。如果处于debug状态,部分代码行将不能被调试,具体做了什么优化好像没说 3 等级3 -O0 最少的优化,可以最大程度上配合产生代码调试信息,可以在任何代码行打断点,特别是死代码处。 -O1 有限的优化,去除无用的inline和无用的static函数、死代码消除等,在影响到调试信息的地方均不进行优化。在适当的代码体积和充分的调试之间平衡,代码编写阶段最常用的优化等级。 -O2 高度优化,调试信息不友好,有可能会修改代码和函数调用执行流程,自动对函数进行内联等。 -O3 最大程度优化,产生极少量的调试信息。会进行更多代码优化,例如循环展开,更激进的函数内联等。 另外,可以通过单独设置 --loop_optimization_level=option 来控制循环展开的优化等级。 因为你这里rt_timer_control函数的设置与初始化的内容是重复的,估计这里给cut 了 你可以在 delay_Temp变量前加 volatile可以禁止优化
撰写答案
登录
注册新账号
关注者
0
被浏览
847
关于作者
zhaohuiqazx
这家伙很懒,什么也没写!
提问
2
回答
1
被采纳
0
关注TA
发私信
相关问题
1
请问rtt-studio工程如何转为MDK工程?
2
时间片视频教程移植,时间片功能不起作用是什么情况
3
使用env生成keil5工程,怎么添加全局宏?
4
Rtthread-studio编译报错
5
cubemx配置keil正常输出stdio输出不了PWM寄存器的值仿真一样?
6
RTT-Studio生成的工程,子目录没有SConscript文件
7
通过ENV生成的MDK5工程,为什么默认的启动文件是context_gcc.S呢
8
试用了一下liteos,我又回来啦
9
在applications文件夹下添加了新的.c/.h文件后无法生成MDK5工程
10
pandora开发板使用cjson,内存不足。
推荐文章
1
RT-Thread应用项目汇总
2
玩转RT-Thread系列教程
3
国产MCU移植系列教程汇总,欢迎查看!
4
机器人操作系统 (ROS2) 和 RT-Thread 通信
5
五分钟玩转RT-Thread新社区
6
【技术三千问】之《玩转ART-Pi》,看这篇就够了!干货汇总
7
关于STM32H7开发板上使用SDIO接口驱动SD卡挂载文件系统的问题总结
8
STM32的“GPU”——DMA2D实例详解
9
RT-Thread隐藏的宝藏之completion
10
【ART-PI】RT-Thread 开启RTC 与 Alarm组件
最新文章
1
使用百度AI助手辅助编写一个rt-thread下的ONVIF设备发现功能的功能代码
2
RT-Thread 发布 EtherKit开源以太网硬件!
3
rt-thread使用cherryusb实现虚拟串口
4
《C++20 图形界面程序:速度与渲染效率的双重优化秘籍》
5
《原子操作:程序世界里的“最小魔法单位”解析》
热门标签
RT-Thread Studio
串口
Env
LWIP
SPI
AT
Bootloader
Hardfault
CAN总线
FinSH
ART-Pi
USB
DMA
文件系统
RT-Thread
SCons
RT-Thread Nano
线程
MQTT
STM32
RTC
FAL
rt-smart
ESP8266
I2C_IIC
WIZnet_W5500
UART
ota在线升级
PWM
cubemx
freemodbus
flash
packages_软件包
BSP
潘多拉开发板_Pandora
定时器
ADC
GD32
flashDB
socket
中断
Debug
编译报错
msh
SFUD
keil_MDK
rt_mq_消息队列_msg_queue
ulog
C++_cpp
at_device
本月问答贡献
踩姑娘的小蘑菇
7
个答案
3
次被采纳
a1012112796
13
个答案
2
次被采纳
张世争
9
个答案
2
次被采纳
rv666
5
个答案
2
次被采纳
用户名由3_15位
11
个答案
1
次被采纳
本月文章贡献
程序员阿伟
8
篇文章
2
次点赞
hhart
3
篇文章
4
次点赞
大龄码农
1
篇文章
4
次点赞
ThinkCode
1
篇文章
1
次点赞
Betrayer
1
篇文章
1
次点赞
回到
顶部
发布
问题
分享
好友
手机
浏览
扫码手机浏览
投诉
建议
回到
底部