|
例子含MDK和IAR两个版本:
V4-334_FreeRTOS实验_低功耗(Tickless Idle模式).rar
(3.79 MB, 下载次数: 109)
1. ST固件库到V3.6.1版本
2. BSP驱动包V1.2
3. FreeRTOS版本V8.2.2
=================================================
/*
*********************************************************************************************************
*
* 模块名称 : 主程序模块。
* 文件名称 : main.c
* 版 本 : V1.0
* 说 明 : 本实验主要学习FreeRTOS的低功耗(Tickless Idle模式)
* 实验目的:
* 1. 学习FreeRTOS的低功耗(Tickless Idle模式)
* 2. FreeRTOS自带的tickless idle模式使用比较简单,只需用户使能
* 宏配置:
* #define configUSE_TICKLESS_IDLE 1
* 3. 为了打印系统信息,试验中始化一个定时器中断,精度高于滴答定时器中断,
* 每50us进一次,实际使用Tickless Idle模式务必不要再使用这个功能,这个
* 功能仅用于系统信息打印。
* 实验内容:
* 2. 按下按键K1可以通过串口打印任务执行情况
* 任务名 任务状态 优先级 剩余栈 任务序号
* vTaskUserIF R 1 332 1
* IDLE R 0 120 5
* vTaskMsgPro B 3 458 3
* vTaskLED B 2 458 2
* vTaskStart B 4 490 4
*
* 任务名 运行计数 使用率
* vTaskUserIF 5363 2%
* IDLE 254937 97%
* vTaskMsgPro 865 <1%
* vTaskLED 1234 <1%
* vTaskStart 2 <1%
* 串口软件建议使用SecureCRT(V4光盘里面有此软件)查看打印信息。
* vTaskTaskUserIF 任务:按键消息处理
* vTaskLED 任务 :使用函数xQueueReceive接收任务vTaskTaskUserIF发送的消息队列数据(xQueue2)
* vTaskMsgPro 任务 :使用函数xQueueReceive接收任务vTaskTaskUserIF发送的消息队列数据(xQueue1)
* vTaskStart 任务 :按键扫描
* 3. 任务运行转态的定义如下,跟上面串口打印字母B, R, D, S对应:
* #define tskBLOCKED_CHAR ( 'B' )
* #define tskREADY_CHAR ( 'R' )
* #define tskDELETED_CHAR ( 'D' )
* #define tskSUSPENDED_CHAR ( 'S' )
* 4. K2键按下,向xQueue1发送数据。
* 5. K3键按下,向xQueue2发送数据。
* 6. 关于低功耗的说明:
* (1) STM32F10xxx有三种低功耗模式
* a. 睡眠模式(Cortex-M3内核停止,所有外设包括Cortex-M3核心的外设,如NVIC、系统时
* 钟(SysTick)等仍在运行)
* b. 停止模式(所有的时钟都已停止)
* c. 待机模式(1.8V电源关闭)
* (2) 通过指令__WFI进入休眠模式,可以通过任意中断唤醒。
* (3) 降低系统主频或者关闭外设时钟也可有效降低系统功耗。
* 7. FreeRTOS自带的tickless idle模式是调用的指令__WFI进入休眠模式。
* 8. 实际项目中推荐采用官方的tickless模式。
* 设计低功耗主要从以下几方面着手:
* 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-19 Eric2013 1. ST固件库到V3.6.1版本
* 2. BSP驱动包V1.2
* 3. FreeRTOS版本V8.2.2
*
* Copyright (C), 2015-2020, 安富莱电子 www.armfly.com
*
*********************************************************************************************************
*/ |
|