1272|0

441

帖子

3

TA的资源

纯净的硅(高级)

楼主
 

【MSPM0L1306 LaunchPad】移植freertos系统 [复制链接]

  本帖最后由 TL-LED 于 2023-10-24 18:18 编辑

这篇来移植freertos系统到MSPM0L1306 LaunchPad开发板。

MSPM0L1306芯片内部的RAM只有4KB,移植空间受到限制,下面使用keil的pack包自带的freertos系统来创建。

 

一、安装freertos

 

安装freertos的pack包

 

二、添加源码到项目

 

 

三、修改配置文件

 

 

设置心跳始终

 

四、程序

 

main.c

#include "ti_msp_dl_config.h"
#include "led/led.h"
#include "systick/systick.h"
#include "uart/uart.h"
#include "key/key.h"
#include "FreeRTOS.h"
#include "task.h"  

#define START_TASK_PRIO      1                   
#define START_STK_SIZE  64                
static TaskHandle_t            StartTask_Handler = NULL; 

#define TASK1_PRIO      2                   
#define TASK1_STK_SIZE  64                 
static TaskHandle_t            Task1Task_Handler = NULL;  
           
#define TASK2_PRIO      3                   
#define TASK2_STK_SIZE  64                 
static TaskHandle_t            Task2Task_Handler = NULL;  
 
void start_task(void *pvParameters); 
void task1(void *pvParameters);  
void task2(void *pvParameters);

int main(void)
{
	SYSCFG_DL_init();
	init_systick();
	init_led();
	init_uart(115200);
	key_init();
	printf("mspm0l1306 board test! \r\n");
	
	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();
	return 0;
}


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


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

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

 

 

五、运行结果

 

下载程序后,串口输出

 

运行视频

freertos

 

此帖出自MSPM0 MCU论坛
点赞 关注
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表