FreeRTOS低功耗模式
睡眠模式
停止模式
待机模式
系统配置
添加两个函数
程序
这里程序和二值信号量程序一样,只添加两个函数即可,这里不做太多说明。添加的函数是:void PreSleepProcessing(uint32_t ulExpectedIdleTime)和void PostSleepProcessing(uint32_t ulExpectedIdleTime)。
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "timer.h"
#include "lcd.h"
#include "key.h"
#include "beep.h"
#include "string.h"
#include "malloc.h"
#include "FreeRTOS.h"
#include "task.h"
#include "semphr.h"
//ÈÎÎñÓÅÏȼ¶
#define START_TASK_PRIO 1
//ÈÎÎñ¶ÑÕ»´óС
#define START_STK_SIZE 256
//ÈÎÎñ¾ä±ú
TaskHandle_t StartTask_Handler;
//ÈÎÎñº¯Êý
void start_task(void *pvParameters);
//ÈÎÎñÓÅÏȼ¶
#define TASK1_TASK_PRIO 2
//ÈÎÎñ¶ÑÕ»´óС
#define TASK1_STK_SIZE 256
//ÈÎÎñ¾ä±ú
TaskHandle_t Task1Task_Handler;
//ÈÎÎñº¯Êý
void task1_task(void *pvParameters);
//ÈÎÎñÓÅÏȼ¶
#define DATAPROCESS_TASK_PRIO 3
//ÈÎÎñ¶ÑÕ»´óС
#define DATAPROCESS_STK_SIZE 256
//ÈÎÎñ¾ä±ú
TaskHandle_t DataProcess_Handler;
//ÈÎÎñº¯Êý
void DataProcess_task(void *pvParameters);
//¶þÖµÐźÅÁ¿¾ä±ú
SemaphoreHandle_t BinarySemaphore; //¶þÖµÐźÅÁ¿¾ä±ú
//ÓÃÓÚÃüÁî½âÎöÓõÄÃüÁîÖµ
#define LED1ON 1
#define LED1OFF 2
#define BEEPON 3
#define BEEPOFF 4
#define COMMANDERR 0XFF
//进入低功耗模式
void PreSleepProcessing(uint32_t ulExpectedIdleTime)
{
//关闭时钟
RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB, DISABLE);
RCC_AHB1PeriphCloc