void task1_task(void *pvParameters)
{
char task_num =0;
while(1){
task_num++;
LED0 =~LED0;
printf("LED0 run %d\r\n",task_num);
vTaskDelay(1000);
}
}
void task2_task(void *pvParameters)
{
char task_num =0;
while(1){
task_num++;
LED1 =~LED1;
printf("LED1 run %d\r\n",task_num);
vTaskDelay(1000);
}
}
void key_task(void *pvParameters)
{
while(1)
{
if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_10)==0){
vTaskDelay(100);
vTaskSuspend(task_Handle);
printf("Task is Suspend! \r\n");
}
if(GPIO_ReadInputDataBit(GPIOB,GPIO_Pin_10)==0){
vTaskDelay(100);
vTaskSuspend(task_Handle);
printf("Task is Suspend! \r\n");
}
}
}
LED初始化
void LED_Init(void)
{
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOA, ENABLE); //使能PB,PE端口时钟
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13; //LED0-->PB.5 端口配置
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOC, &GPIO_InitStructure); //根据设定参数初始化GPIOB.5
GPIO_SetBits(GPIOC,GPIO_Pin_13); //PB.5 输出高
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5; //LED1-->PE.5 端口配置, 推挽输出
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; //推挽输出
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //IO口速度为50MHz
GPIO_Init(GPIOA, &GPIO_InitStructure); //推挽输出 ,IO口速度为50MHz
GPIO_SetBits(GPIOA,GPIO_Pin_5); //PE.5 输出高
}
Key的初始化震动传感器
#include "Key.h"
void Key_Init(void)
{
GPIO_InitTypeDef Key_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE); //使能PB端口时钟
Key_InitStructure.GPIO_Pin = GPIO_Pin_10;
Key_InitStructure = GPIO_Mode_IPD;
Key_InitStructure(GPIOB, &GPIO_InitStructure);
Key_InitStructure.GPIO_Pin = GPIO_Pin_8;
Key_InitStructure = GPIO_Mode_IPD;
Key_InitStructure(GPIOB, &GPIO_InitStructure);
}