#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "FreeRTOS.h"
#include "task.h"
#include "key.h"
#include "exti.h"
#include "timer.h"

#define Start_Task_Size 120
#define Start_Task_Prio 1
TaskHandle_t Start_Task_Handler;
void Start_Task(void *pvParamaters);

#define Task1_Task_Size 120
#define Task1_Task_Prio 4
TaskHandle_t Task1_Task_Handler;
void Task1_Task(void *pvParamaters);

#define Task2_Task_Size 120
#define Task2_Task_Prio 3
TaskHandle_t Task2_Task_Handler;
void Task2_Task(void *pvParamaters);

#define Key_Task_Size 120
#define Key_Task_Prio 2
TaskHandle_t Key_Task_Handler;
void Key_Task(void *pvParamaters);


int main(void)
{
	NVIC_PriorityGroupConfig(NVIC_PriorityGroup_4);//设置系统中断优先级分组4	 
	delay_init();	    				//延时函数初始化	  
	uart_init(115200);					//初始化串口
	LED_Init();		  					//初始化LED
	Key_Init();
	EXTI_Key_Init();
	Time2_Init();
	Time3_Init();
	
	
	 xTaskCreate( (TaskFunction_t) 					Start_Task,
                (char *)  								"Start_Task", 
                (configSTACK_DEPTH_TYPE) 	Start_Task_Size,
                (void *)  								NULL,
                (UBaseType_t) 						Start_Task_Prio,
                (TaskHandle_t *)  				&Start_Task_Handler );
	
	
	vTaskStartScheduler();
}


void Start_Task(void *pvParamaters)
{
	char i = 0;
	while(1)
	{
		i++;
		if(i == 5)
		{
			printf("Close Interrupt\r\n");
			portDISABLE_INTERRUPTS();
			delay_xms(5000);
			printf("Open Interrupt\r\n");
			portENABLE_INTERRUPTS();
			
		}
		vTaskDelay(1000);
	}
	
								
}






#include "stm32f10x.h"
#include "timer.h"
#include "stdio.h"


void Time2_Init(void)
{
	TIM_TimeBaseInitTypeDef Timer_Initstructure;
	NVIC_InitTypeDef NVIC_Initstructure;
	
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM2,ENABLE);
	
	Timer_Initstructure.TIM_ClockDivision = TIM_CKD_DIV1;
	Timer_Initstructure.TIM_CounterMode = TIM_CounterMode_Up;
	Timer_Initstructure.TIM_Period = 10000-1;
	Timer_Initstructure.TIM_Prescaler = 7200-1;
	Timer_Initstructure.TIM_RepetitionCounter = 0;
	TIM_TimeBaseInit(TIM2,&Timer_Initstructure);
	
	TIM_ITConfig(TIM2,TIM_IT_Update,ENABLE);
	
	NVIC_Initstructure.NVIC_IRQChannel = TIM2_IRQn;
	NVIC_Initstructure.NVIC_IRQChannelCmd = ENABLE;
	NVIC_Initstructure.NVIC_IRQChannelPreemptionPriority = 4;
	NVIC_Initstructure.NVIC_IRQChannelSubPriority = 0;
	NVIC_Init(&NVIC_Initstructure);
	
	TIM_Cmd(TIM2,ENABLE);
	
}

void Time3_Init(void)
{
	TIM_TimeBaseInitTypeDef Timer_Initstructure;
	NVIC_InitTypeDef NVIC_Initstructure;
	
	RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3,ENABLE);
	
	Timer_Initstructure.TIM_ClockDivision = TIM_CKD_DIV1;
	Timer_Initstructure.TIM_CounterMode = TIM_CounterMode_Up;
	Timer_Initstructure.TIM_Period = 10000-1;
	Timer_Initstructure.TIM_Prescaler = 7200-1;
	Timer_Initstructure.TIM_RepetitionCounter = 0;
	TIM_TimeBaseInit(TIM3,&Timer_Initstructure);
	
	TIM_ITConfig(TIM3,TIM_IT_Update,ENABLE);
	
	NVIC_Initstructure.NVIC_IRQChannel = TIM3_IRQn;
	NVIC_Initstructure.NVIC_IRQChannelCmd = ENABLE;
	NVIC_Initstructure.NVIC_IRQChannelPreemptionPriority = 5;
	NVIC_Initstructure.NVIC_IRQChannelSubPriority = 0;
	NVIC_Init(&NVIC_Initstructure);
	
	TIM_Cmd(TIM3,ENABLE);
	
}


void TIM2_IRQHandler(void)
{
	if(TIM_GetITStatus(TIM2,TIM_IT_Update)   == 1)
	{
		printf("TIM2 Interrupt\r\n");
		
		TIM_ClearITPendingBit(TIM2,TIM_IT_Update);
	}

}

void TIM3_IRQHandler(void)
{
	if(TIM_GetITStatus(TIM3,TIM_IT_Update)   == 1)
	{
		printf("TIM3 Interrupt\r\n");
		
		TIM_ClearITPendingBit(TIM3,TIM_IT_Update);
	}

}







Logo

openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。

更多推荐