FreeRtos任务的挂起和恢复实验示例(后续)

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);

}

你可能感兴趣的:(单片机,嵌入式硬件)