硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2159|回复: 5
收起左侧

[FreeRTOS] FreeRTOS tickless 模式不能使用

[复制链接]

28

主题

274

回帖

358

积分

高级会员

积分
358
发表于 2018-11-7 15:38:20 | 显示全部楼层 |阅读模式
小弟我 ,  在 FreeRTOS 下 移植了 SEGGER  RTT,但是开启 FreeRTOS的 tickless模式 ,不能打印,哪位大佬 看看!  

STM32F103C8T6_FreeRTOS_V10.0_SEGGER_RTT_SWD4根线_关闭tickless模式_测试OK.7z

1.33 MB, 下载次数: 16

回复

使用道具 举报

28

主题

274

回帖

358

积分

高级会员

积分
358
 楼主| 发表于 2018-11-7 15:38:53 | 显示全部楼层
如果测试 请在 FreeRTOSconfig.h  配置里打开 FreeRTOS 的 tickless 模式 进行测试!
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106978
QQ
发表于 2018-11-7 15:54:15 | 显示全部楼层
/* 保证睡眠模式下调试器继续可以连接使用 */
DBGMCU_Config(DBGMCU_SLEEP, ENABLE);
回复

使用道具 举报

28

主题

274

回帖

358

积分

高级会员

积分
358
 楼主| 发表于 2018-11-7 15:55:25 | 显示全部楼层
本帖最后由 suozhang 于 2018-11-7 19:24 编辑

试了 一下  不行
回复

使用道具 举报

28

主题

274

回帖

358

积分

高级会员

积分
358
 楼主| 发表于 2018-11-7 15:57:58 | 显示全部楼层
本帖最后由 suozhang 于 2018-11-7 19:19 编辑
eric2013 发表于 2018-11-7 15:54
/* 保证睡眠模式下调试器继续可以连接使用 */
DBGMCU_Config(DBGMCU_SLEEP, ENABLE);
老哥 试了一下 ,貌似 不行
回复

使用道具 举报

28

主题

274

回帖

358

积分

高级会员

积分
358
 楼主| 发表于 2018-11-16 18:05:18 | 显示全部楼层
本帖最后由 suozhang 于 2018-11-16 18:07 编辑

已经解决,方法如下:

第一步: 开启 低功耗模式下,debug 的连接
    DBGMCU_Config(DBGMCU_SLEEP, ENABLE);
    DBGMCU_Config(DBGMCU_STOP, ENABLE);
第二步: 判断 RTT 缓冲区有多少字节,然后进行 MCU 空转,空转时间 给JLINK 进行读取 数据,就可以正常打印了
  1. extern unsigned _GetAvailWriteSpace(SEGGER_RTT_BUFFER_UP* pRing);
  2. void flushSeggerRtt( void )
  3. {
  4.     uint32_t i = 0;
  5.    
  6.     uint32_t delayTick = BUFFER_SIZE_UP - _GetAvailWriteSpace( _SEGGER_RTT.aUp );
  7.    
  8.     while( delayTick-- )
  9.     {
  10.         for( i=0; i<1000; i++ );
  11.     }

  12. }
复制代码
第三步: 在 低功耗 之前 调用  flushSeggerRtt(); 函数即可! 例如如下:

  1. void configBeforeEnterStopMode( unsigned int tick )
  2. {

  3.     flushSeggerRtt();
  4.    
  5. }
复制代码

这样做有个缺点 :  就是你不连接jlink, 在 每次进入低功耗之前 都会 进行CPU 空转!!!,因此 建议 增加 debug 宏 进行 判断是否调用 flushSeggerRtt();
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-12 22:00 , Processed in 0.164531 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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