IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> 英飞凌infineon-XMC4500,移植FreeRTOS -> 正文阅读

[嵌入式]英飞凌infineon-XMC4500,移植FreeRTOS

自学使用(2021-10-27);

编译器:KEIL MDK5.2;

MCU:xmc4500(cotex-M4F);

FreeRTOS:V9.0(官方下载地址:https://sourceforge.net/projects/freertos/files/FreeRTOS/);

?一、使用KEIL XMC4500工程模板

二、拷贝文件

1. 在工程模板文件中创建FreeRTOS文件夹;

2. 将官方? \FreeRTOSv9.0.0\FreeRTOS\Source? 下的所有文件,拷贝到工程模板;

3. 注意FreeRTOSv9.0.0\FreeRTOS\Demo\CORTEX_M4F_Infineon_XMC4000_Keil下,FreeRTOSConfig.h文件,也要拷贝到Include;

三、添加所需编译文件

port.c路径 : XMC4500_Pro\FreeRTOS\portable\RVDS\ARM_CM4F

heap_4.c路径 : XMC4500_Pro\FreeRTOS\portable\MemMang

四、添加定义,并包含头文件

1. rvkdm PART_XMC4500

2.?.\FreeRTOS\include

3.?.\FreeRTOS\portable\RVDS\ARM_CM4F

五、编译,处理错误

1. 注释工程中其他位置的 PendSV_Handler,SVC_Handler,SysTick_Handler,因为在FreeRTOSConfig.h文件,已经定义;

2. 再次编译出错(编号1),修改FreeRTOSConfig.h宏定义(编号2),关闭功能:
Line93:#define WORKAROUND_PMU_CM001?? ??? ??? ??? ??? ?0//1? 注修改
Line111:#define configCHECK_FOR_STACK_OVERFLOW?? ??? ??? ?0//2? 注修改
Line113:#define configUSE_MALLOC_FAILED_HOOK?? ??? ??? ?0//1 ? 注修改

3.再次编译,通过~

六、编写测试task,代码如下,编译通过~

#include "i2c.h"
#include "ccu4.h"
#include "ccu8.h"
#include "main.h"
#include "port.h"
#include "uart.h"
#include "posif.h"
#include "system.h"
#include "modbus.h"
#include "xmc_scu.h"
#include "xmc4_scu.h"

#include <stdio.h>
#include "FreeRTOS.h"
#include "task.h"

System_TypeDef System;

#define START_TASK_PRIO    ( tskIDLE_PRIORITY + 1 )
#define LED_TASK_PRIO      ( tskIDLE_PRIORITY + 2 )

void START_task(void * pvParameters);
void LED_task(void * pvParameters);

TaskHandle_t xHandle = NULL;

int main(void)
{
	/*System_Init*/
	System_Init();
	/* Port Init */
	Port_Init();
	/* START_task Create */
	xTaskCreate(
				(TaskFunction_t   ) START_task,
				(const char*      ) "start_task",
				(uint16_t         ) configMINIMAL_STACK_SIZE,
				(void*            ) NULL,
				(UBaseType_t      ) START_TASK_PRIO,
				(TaskHandle_t *   ) &xHandle
				);
				
	/* start scheduler */
  vTaskStartScheduler();
	for( ; ; );
}


void START_task(void * pvParameters)
{
	static uint8_t ucParameterToPass=5;
	taskENTER_CRITICAL();       
	/* LED_task Create */    	
	xTaskCreate(
				(TaskFunction_t   ) LED_task,
				(const char*      ) "LED_task",
				(uint16_t         ) configMINIMAL_STACK_SIZE,
				(void*            ) &ucParameterToPass,
				(UBaseType_t      ) LED_TASK_PRIO,
				(TaskHandle_t *   ) NULL
				);
				
	configASSERT( xHandle );			
	if( xHandle != NULL )
	{
		vTaskDelete( xHandle );
//		printf("Delete START_task!\r\n");
	}
	taskEXIT_CRITICAL();            
} 


void LED_task(void * pvParameters)
{
	for( ;; )
	{
    XMC_GPIO_ToggleOutput(P4_1);//LED1
    XMC_GPIO_ToggleOutput(P4_0);//LED2
		vTaskDelay(500);
	}
}

总结:模板FreeRTOS移植相对方便,只需要注意修改部分宏定义,包含所需要头文件,注释系统中断接口,即可以完成移植。相较于UcosIII简单,具体使用仍需要再深入了解。

模板也同样适用于stm32系列,需要修改的是,从stm的Demo中FreeRTOSConfig.h到工程,其他步骤不变。

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-10-28 12:32:33  更:2021-10-28 12:33:21 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/26 6:24:59-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码