|
例子下载(含IAR和MDK两个版本):
V4-810_uCOS-II实验_低功耗(睡眠模式).rar
(2.71 MB, 下载次数: 213)
当前最新版本:
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
*********************************************************************************************************
*/ |
|