硬汉嵌入式论坛

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

[μCOS-II] uCOS-II低功耗: 休眠模式 例程说明及其下载(基于STM32-V4板子)

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106974
QQ
发表于 2015-9-29 19:50:37 | 显示全部楼层 |阅读模式
例子下载(含IAR和MDK两个版本):
V4-810_uCOS-II实验_低功耗(睡眠模式).rar (2.71 MB, 下载次数: 207)
当前最新版本:
1. uCOS-II版本V2.92.11
2. uC/CPU版本V1.30.02
3. uC/LIB版本V1.38.01
============================================================

/*
*********************************************************************************************************                                 
*    模块名称 : uCOS-II
*    文件名称 : app.c
*    版    本 : V1.0
*    说    明 : 本实验主要实现低功耗模式中的休眠模式
*              实验目的:
*                1. 学习如何在uCOS-II上实现休眠模式。
*              实验内容:
*                1. 共创建了如下几个任务,通过按下按键K1可以通过串口打印任务堆栈使用情况
*                   优先级   使用栈  剩余栈  百分比   任务名
*                    Prio     Used    Free    Per      Taskname
*                     63       20      108    15%     uC/OS-II Idle
*                     62       22      106    17%     uC/OS-II Stat
*                      0       48      208    18%     Start Task
*                      2       61      195    23%     User Interface
*                     60       28      228    10%     LED
*                      3       26      230    10%     COM
*                      1       30      226    11%     KeyScan
*                    串口软件建议使用SecureCRT(V4光盘里面有此软件)查看打印信息。
*                    Start Task任务    :打印系统休眠时间,系统总运行时间,休眠时间百分比。
*                    User Interface任务:根据用户的按键消息,实现相应的操作。
*                    LED任务           :实现LED闪烁。
*                    KeyScan任务       :主要是实现按键扫描。
*                    COM任务           :实现LED闪烁。
*                2. 关于低功耗的说明:
*                   (1) uCOS源码中没有低功耗相关函数,所以需要用户自己去实现。FreeRTOS中低功耗
*                       的实现都是采用的tickless模式,简单的说就是进入空闲任务后获取可以关闭滴答
*                       定时器的时间长度,关闭了滴答定时器意味着关闭了任务调度,然后调用__WFI指令
*                       进入休眠模式,关闭滴答定时器的时间到后休眠模式会被唤醒,继续执行多任务。
*                   (2) STM32F10xxx有三种低功耗模式
*                        a. 睡眠模式(Cortex-M3内核停止,所有外设包括Cortex-M3核心的外设,如NVIC、系统时
*                           钟(SysTick)等仍在运行)
*                        b. 停止模式(所有的时钟都已停止)
*                        c. 待机模式(1.8V电源关闭)
*                   (3) 通过指令__WFI进入休眠模式,可以通过任意中断唤醒。
*                   (4) 降低系统主频或者关闭外设时钟也可有效降低系统功耗。
*                3. (1)本例程的低功耗实现方法是在空闲任务的钩子函数中调用__WFI指令来进入低功耗模式。
*                      调用__WFI指令前关闭串口时钟,LED引脚时钟,串口引脚时钟。被唤醒后重新开启。
*                      相关函数都在app_hooks.c文件中。
*                   (2)IO引脚的状态未做处理,实际项目中要做处理
*                   (3)本工程使用了滴答定时器中断和PendSV中断,由于空闲任务没有执行调度相关函数。
*                      只有滴答定时器能够唤醒休眠。
*                      针对这种情况,专门测试了一下休眠模式的执行时间,以及休眠时间占总运行时间的百分比。
*                      系统比较闲的情况下,基本都是出于休眠状态。
*                      a. 休眠总时间:31402ms, 系统总时间:32465ms 休眠时间百分比:96%
*                      b. 休眠总时间:103286ms, 系统总时间:106847ms 休眠时间百分比:96%
*                      c. 休眠总时间:2419529ms, 系统总时间:2504275ms 休眠时间百分比:96%
*              设计低功耗主要从以下几方面着手:
*                1. 用户需要根据最低电源消耗、最快速启动时间和可用的唤醒源等条件,选定一个最佳的低功耗模式。
*                   可以使用的低功耗方式有休眠模式,待机模式,停机模式。
*                2. 选择了低功耗方式后就是关闭可以关闭的外设时钟。
*                3. 降低系统主频。
*                4. 注意I/O的状态。
*                   如果此IO口带上拉,请设置为高电平输出或者高阻态输入;
*                   如果此IO口带下拉,请设置为低电平输出或者高阻态输入;
*                   a. 在睡眠模式下,所有的I/O引脚都保持它们在运行模式时的状态。
*                   b. 在停止模式下,所有的I/O引脚都保持它们在运行模式时的状态。
*                   c. 在待机模式下,所有的I/O引脚处于高阻态,除了以下的引脚:
*                      ● 复位引脚(始终有效)
*                      ● 当被设置为防侵入或校准输出时的TAMPER引脚
*                      ● 被使能的唤醒引脚
*                5. 注意IO和外设IC的连接。
*                6. 测低功耗的时候,一定不要连接调试器,更不能边调试边测电流。
*
*              注意事项:
*                 1. 本实验推荐使用串口软件SecureCRT,要不串口打印效果不整齐。此软件在
*                    V4开发板光盘里面有。
*                 2. 务必将编辑器的缩进参数和TAB设置为4来阅读本文件,要不代码显示不整齐。
*
*    修改记录 :
*        版本号   日期         作者            说明
*       V1.0    2015-08-02   Eric2013    1. ST固件库到V3.6.1版本
*                                        2. BSP驱动包V1.2
*                                        3. uCOS-II版本V2.92.11
*                                        4. uC/CPU版本V1.30.02
*                                        5. uC/LIB版本V1.38.01
*                                       
*    Copyright (C), 2015-2020, 安富莱电子 www.armfly.com
*********************************************************************************************************
*/
回复

使用道具 举报

36

主题

2040

回帖

2148

积分

至尊会员

积分
2148
发表于 2015-9-30 08:11:52 | 显示全部楼层
[s:151] [s:151] [s:151]
Ever tried. Ever failed. No matter. Try Again. Fail again. Fail better.
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-12 13:11 , Processed in 0.157803 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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