【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
|