FreeRTOS测试代码

#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "led.h"
#include "key.h"
#include "lcd.h"
#include "sram.h"
#include "malloc.h" 
#include "FreeRTOS_test1.h"


int main(void)
{

	
    HAL_Init();                   	//初始化HAL库    
    Stm32_Clock_Init(336,8,2,7);  	//设置时钟,168Mhz
	delay_init(168);               	//初始化延时函数
	uart_init(115200);             	//初始化USART
	LED_Init();						//初始化LED	
	KEY_Init();						//初始化KEY
	LCD_Init();                     //初始化LCD	
 	
	freertos();
		
}



#define START_TASK_PRIO 1 //任务优先级
#define START_STK_SIZE 128 //任务堆栈大小
TaskHandle_t StartTask_Handler; //任务句柄
void start_task(void *pvParameters); //任务函数
#define LED0_TASK_PRIO 2 //任务优先级
#define LED0_STK_SIZE 50 //任务堆栈大小
TaskHandle_t LED0Task_Handler; //任务句柄
void led0_task(void *p_arg); //任务函数
#define LED1_TASK_PRIO 3 //任务优先级
#define LED1_STK_SIZE 50 //任务堆栈大小
TaskHandle_t LED1Task_Handler; //任务句柄
void led1_task(void *p_arg); //任务函数
#define FLOAT_TASK_PRIO 4 //任务优先级
#define FLOAT_STK_SIZE 128 //任务堆栈大小
TaskHandle_t FLOATTask_Handler; //任务句柄
void float_task(void *p_arg); //任务函数

int freertos(void)
{

	//创建开始任务
	 xTaskCreate((TaskFunction_t )start_task, //任务函数
	 (const char* )"start_task", //任务名称
	 (uint16_t )START_STK_SIZE, //任务堆栈大小
	 (void* )NULL, //传递给任务函数的参数
	 (UBaseType_t )START_TASK_PRIO, //任务优先级
	 (TaskHandle_t* )&StartTask_Handler); //任务句柄 
	 vTaskStartScheduler(); //开启任务调度
}
//开始任务任务函数
void start_task(void *pvParameters)
{
	 taskENTER_CRITICAL(); //进入临界区
	 //创建 LED0 任务
	 xTaskCreate((TaskFunction_t )led0_task, 
	 (const char* )"led0_task", 
	 (uint16_t )LED0_STK_SIZE, 
	 (void* )NULL,
	 (UBaseType_t )LED0_TASK_PRIO,
	 (TaskHandle_t* )&LED0Task_Handler); 
	 //创建 LED1 任务
	 xTaskCreate((TaskFunction_t )led1_task, 
	 (const char* )"led1_task", 
	 (uint16_t )LED1_STK_SIZE, 
	 (void* )NULL,
	 (UBaseType_t )LED1_TASK_PRIO,
	 (TaskHandle_t* )&LED1Task_Handler); 
	 //浮点测试任务
	 xTaskCreate((TaskFunction_t )float_task, 
	 (const char* )"float_task", 
	 (uint16_t )FLOAT_STK_SIZE, 
	 (void* )NULL,
	 (UBaseType_t )FLOAT_TASK_PRIO,
	 (TaskHandle_t* )&FLOATTask_Handler); 
	 vTaskDelete(StartTask_Handler); //删除开始任务
	 taskEXIT_CRITICAL(); //退出临界区
}
//LED0 任务函数
void led0_task(void *pvParameters)
{
	 while(1)
	 {
	 LED0=~LED0;
	 vTaskDelay(500);
	 }
} 
//LED1 任务函数
void led1_task(void *pvParameters)
{
	 while(1)
	{
		 LED1=0;
		 vTaskDelay(200);
		 LED1=1;
		 vTaskDelay(800);
	 }
}
//浮点测试任务
void float_task(void *p_arg)
{
	static float float_num=0.00;
	while(1)
	{
		float_num+=0.01f;
		printf("float_num 的值为: %.4f\r\n",float_num);
		 vTaskDelay(1000);
	}
}





  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小白很低调

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值