759|2

441

帖子

3

TA的资源

纯净的硅(高级)

楼主
 

【AT32A403A 车规MCU开发板】 FreeRTOS移植 [复制链接]

学习下在AT32A403开发板上移植FreeRTOS系统。

 

一、FreeRTOS源码下载

 

源码下载地址:https://www.freertos.org/zh-cn-cmn-s/a00104.html

 

二、代码移植

 

将源代码添加到项目

 

三、创建任务程序

 

3.1、fun_task.c

#include "main.h"

#define START_TASK_PRO		1				
#define START_STK_SIZE		128
TaskHandle_t StartTask_Handler;

#define TASK1_PRIO      4                   
#define TASK1_STK_SIZE  128                 
static TaskHandle_t            Task1Task_Handler = NULL;  
           
#define TASK2_PRIO      3                   
#define TASK2_STK_SIZE  128                 
static TaskHandle_t            Task2Task_Handler = NULL;  

#define TASK3_PRIO      5                   
#define TASK3_STK_SIZE  128                 
static TaskHandle_t            Task3Task_Handler = NULL;  


void start_task(void *pvParameters); 
void gui_task(void *pvParameters);

void task1(void *pvParameters);  
void task2(void *pvParameters);
void task3(void *pvParameters);

void task_create(void)
{
	
	//start_task
	xTaskCreate((TaskFunction_t )start_task,                  
							(const char*    )"start_task",                
							(uint16_t       )START_STK_SIZE,         
							(void*          )NULL,                   
							(UBaseType_t    )START_TASK_PRO,             
							(TaskHandle_t*  )&StartTask_Handler);    

	vTaskStartScheduler();
}

void start_task(void *pvParameters)
{
	taskENTER_CRITICAL(); 
	//task1
	xTaskCreate((TaskFunction_t )task1,                  
							(const char*    )"task1",                
							(uint16_t       )TASK1_STK_SIZE,         
							(void*          )NULL,                   
							(UBaseType_t    )TASK1_PRIO,             
							(TaskHandle_t*  )&Task1Task_Handler);    
	//task2
	xTaskCreate((TaskFunction_t )task2,                  
							(const char*    )"task2",                
							(uint16_t       )TASK2_STK_SIZE,        
							(void*          )NULL,                  
							(UBaseType_t    )TASK2_PRIO,             
							(TaskHandle_t*  )&Task2Task_Handler); 
							
	//task3
	xTaskCreate((TaskFunction_t )task3,                  
							(const char*    )"task3",                
							(uint16_t       )TASK3_STK_SIZE,        
							(void*          )NULL,                  
							(UBaseType_t    )TASK3_PRIO,             
							(TaskHandle_t*  )&Task3Task_Handler); 						
	taskEXIT_CRITICAL();
	vTaskDelete(StartTask_Handler);						
}


//task1
void task1(void *pvParameters)
{ 
    while (1)
    {
        printf("task1 run ...\r\n");
				led2_tog();
        vTaskDelay(1000);
    }
}

//task2
void task2(void *pvParameters)
{ 
    while (1)
    {	
        printf("task2 run ...\r\n");
				led3_tog();
        vTaskDelay(500);
    }
}

//task3
void task3(void *pvParameters)
{ 
    while (1)
    {	
        //printf("task3 run ...\r\n");
				led4_tog();
				button_ticks();
        vTaskDelay(5);
    }
}

 

3.2、main.c

#include "main.h"

int main(void)
{
  system_clock_config();
	
	delay_init();
	init_usart(115200); 
	init_led(); 
	//init_eint();
	init_key();
	task_create();
	
  while(1)
  {

  }
}

创建了3个任务,第3个任务调用按键处理。

 

四、程序运行

 

4.1、开发板运行后,串口输出

 

4.2、操作按键,串口输出

 

4.3、LED指示灯状态

leds

 

 

 

 

此帖出自汽车电子论坛

最新回复

只在XilinxZynq7020上用过这个,性能相当不错!  详情 回复 发表于 2024-1-25 12:54
点赞 关注

回复
举报

24

帖子

3

TA的资源

一粒金砂(中级)

沙发
 
只在XilinxZynq7020上用过这个,性能相当不错!
此帖出自汽车电子论坛

点评

挺不错的系统  详情 回复 发表于 2024-1-25 17:50
 
 

回复

441

帖子

3

TA的资源

纯净的硅(高级)

板凳
 
mengfeiX 发表于 2024-1-25 12:54 只在XilinxZynq7020上用过这个,性能相当不错!

挺不错的系统

此帖出自汽车电子论坛
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表