freertos 库函数

时间: 2023-10-06 17:14:49 浏览: 48
freertos库函数提供了一些常用的函数来支持任务调度和定时器功能。其中一些重要的函数包括: 1. `xTaskCreate()`:用于创建一个任务,并指定任务的入口函数、任务名字、栈大小、任务参数和优先级等信息。 2. `vTaskStartScheduler()`:用于启动任务调度器,开始任务的执行。 3. `vTaskDelay()`:用于使当前任务暂停执行一段时间,以实现延时功能。 4. `xTimerCreate()`:用于创建一个软件定时器,可以设置定时器的超时时间、周期和回调函数等。 5. `xTimerStart()`:用于启动一个软件定时器,使其开始计时。 6. `xTimerStop()`:用于停止一个软件定时器,停止其计时。 以上只是freertos库中的一小部分函数,你可以在官网获取更详细的库函数列表和使用说明。
相关问题

STM32F103C8T6移植FreeRTOS标准库函数

移植FreeRTOS标准库函数到STM32F103C8T6可以按照以下步骤进行操作: 1. 首先,下载正点原子提供的FreeRTOS V9.0版的程序和HAL库函数的FreeRTOS V10.4.6版的程序。 2. 打开战舰资料中的FreeRTOS例程,路径为【正点原子】战舰STM32F103开发板V4 资料盘(A盘)\4,程序源码\3,扩展例程\2,FreeRTOS例程\FreeRTOS实验例程2 FreeRTOS移植实验\Middlewares\FreeRTOS。 3. 将战舰STM32F103开发板V4 资料盘(A盘)\4,程序源码\3,扩展例程\2,FreeRTOS例程\FreeRTOS实验例程2 FreeRTOS移植实验\User文件夹中的freertos_demo.c、freertos_demo.h、FreeRTOSConfig.h这三个文件复制到你的工程的USER文件夹中。 4. 打开正点原子提供的HAL库函数的FreeRTOS V10.4.6版的程序,将其中的FreeRTOS相关代码直接拷贝到你的标准库函数的工程中,替换原有的FreeRTOS相关代码。 通过以上步骤,你就可以将FreeRTOS V10.4.6版移植到标准库函数中,实现在STM32F103C8T6上使用FreeRTOS标准库函数的功能。请注意,移植过程中可能需要根据你的具体需求进行一些适配和修改。 #### 引用[.reference_title] - *1* *2* *3* [STM32系列单片机标准库移植FreeRTOS V10.4.6详解](https://blog.csdn.net/qq_20222919/article/details/128589414)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

freertos main

在FreeRTOS系统中,主函数main()是整个程序的入口。当系统上电后,首先会启动复位函数Reset_Handle,然后调用C库函数__main进行系统的堆和栈的初始化,最后执行C中的main函数。main函数是用户编写的应用程序的起点,通过调用FreeRTOS提供的API函数来创建任务、进行任务调度等操作,实现多任务并发执行的功能。所以,在使用FreeRTOS时,我们可以根据个人的学习方向,详细了解FreeRTOS的特性和使用方法,以便能更好地应用于自己的项目中。 在FreeRTOS中,系统调度是通过PendSV和SysTick来实现的。其中,PendSV是一个软件触发的中断,用于在任务切换时进行上下文切换,实现任务的调度。而SysTick是一个系统定时器,用于定时中断,可以作为系统节拍定时器,用来确定任务的时间片轮转。由于PendSV和SysTick都涉及到系统调度,为了确保系统的稳定运行,系统的其他硬件中断的优先级要高于系统调度的优先级,即优先相应系统中的外部硬件中断。这样可以确保在有硬件中断时,能够及时响应并处理,保证系统的可靠性和实时性。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [FreeRTOS学习笔记:FreeRTOS启动方式及流程](https://blog.csdn.net/qq_44705488/article/details/130605341)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [FreeRTOS个人笔记-任务定义与任务切换](https://blog.csdn.net/weixin_47077788/article/details/125806129)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

相关推荐

根据提供的引用内容,发生FreeRTOS卡死的问题可能有多个原因。其中,一种可能原因是在中断中调用FreeRTOS的API时,没有确保中断的实际优先级低于FreeRTOS中配置的最大系统调用中断优先级(MAX_SYSCALL_INTERRUPT_PRIORITY)。这是因为在ARM Cortex-M3处理器中,优先级数值越大,实际优先级越低。因此,需要确保中断的优先级值大于MAX_SYSCALL_INTERRUPT_PRIORITY。的描述,当添加了业务功能代码后,所有的任务都立即卡死。这可能是由于业务功能代码中存在一些错误或冲突,导致任务无法正常执行。 此外,在引用中提到了一种情况,即使用memcpy函数时会导致卡死。虽然这个问题在验证后被排除,但这也提醒我们要注意在使用库函数或操作系统API时可能会出现的问题。 综上所述,处理FreeRTOS卡死问题的步骤可以包括以下几点: 1. 确保中断的实际优先级低于FreeRTOS中配置的最大系统调用中断优先级(MAX_SYSCALL_INTERRUPT_PRIORITY)。 2. 检查业务功能代码中是否存在错误或冲突,可能会导致任务卡死。 3. 注意使用库函数或操作系统API时可能会出现的问题,例如在使用memcpy函数时可能导致卡死的情况。 4. 如果以上步骤都没有解决问题,可以尝试进一步调试和排查其他可能的原因。 请注意,以上步骤仅供参考,具体解决方法需要根据实际情况进行调整和验证。123 #### 引用[.reference_title] - *1* *3* [FreeRTOS中断调用API消息队列发送函数导致系统死机(memcpy函数卡死)](https://blog.csdn.net/qq_27132149/article/details/128635473)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] - *2* [freeRTOS出现任务卡死的情况。](https://blog.csdn.net/szy_sin/article/details/110522722)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
### 回答1: 以下是一个使用FreeRTOS控制LED灯的示例代码: #include <stdlib.h> #include "FreeRTOS.h" #include "task.h" #include "stm32f10x.h" #define LED_GPIO_PORT GPIOC #define LED_GPIO_PIN GPIO_Pin_13 static void led_task(void* pvParameters) { while(1) { GPIO_WriteBit(LED_GPIO_PORT, LED_GPIO_PIN, Bit_SET); vTaskDelay(500 / portTICK_RATE_MS); GPIO_WriteBit(LED_GPIO_PORT, LED_GPIO_PIN, Bit_RESET); vTaskDelay(500 / portTICK_RATE_MS); } } int main(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE); GPIO_InitStructure.GPIO_Pin = LED_GPIO_PIN; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(LED_GPIO_PORT, &GPIO_InitStructure); xTaskCreate(led_task, "LED", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY + 1, NULL); vTaskStartScheduler(); while(1); } 这段代码的作用是在STM32F103芯片上控制PC13引脚的LED灯,使用了FreeRTOS的任务调度功能来定时切换LED灯的状态。在任务函数led_task中,先将LED灯的状态设为高电平,然后延时500ms,再将LED灯的状态设为低电平,再延时500ms,循环执行。在主函数中,先初始化LED引脚为输出模式,然后创建一个名为“LED”的任务,将其加入任务队列,并启动FreeRTOS调度器。 ### 回答2: FreeRTOS是一个开源的实时操作系统内核,适用于嵌入式系统开发。根据题目需要,我假设你想要了解如何使用FreeRTOS来编写点灯的代码。 首先,你需要在嵌入式系统上安装FreeRTOS,并创建一个新的任务来控制点灯。 示例代码如下: 1. 首先,包含FreeRTOS所需的头文件: #include "FreeRTOS.h" #include "task.h" 2. 创建一个任务来控制点灯: void ledTask(void *pvParameters) { // 初始化GPIO控制灯的引脚 // 或者使用你的嵌入式硬件的特定API来控制灯的引脚 while(1) { // 点亮灯 // 或者使用你的嵌入式硬件的特定API来控制灯的状态 vTaskDelay(pdMS_TO_TICKS(100)); // 等待100毫秒 // 关闭灯 // 或者使用你的嵌入式硬件的特定API来控制灯的状态 vTaskDelay(pdMS_TO_TICKS(100)); // 等待100毫秒 } } 3. 在系统的初始化函数中创建任务: void systemInit(void) { // 初始化系统,包括初始化硬件等 xTaskCreate(ledTask, "LED Task", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY, NULL); vTaskStartScheduler(); // 启动任务调度器 } 以上是一个简单的FreeRTOS点灯代码的示例,当任务启动后,它会周期性地点亮和关闭灯。你可以根据自己的具体需求来修改代码,比如更改点灯的频率或使用其他的GPIO函数来控制灯的状态。 需要注意的是,上述代码只提供了一个简单的示例,具体的实现可能需要根据你的嵌入式系统的硬件和外设接口进行调整。希望以上回答能够帮到你! ### 回答3: FreeRTOS是一种流行的实时操作系统,用于嵌入式系统的开发。它为多任务处理提供了一个可靠的解决方案,并提供了许多功能强大而又易于使用的API。 下面是一个用FreeRTOS编写的简单点灯代码示例: 首先,我们需要包含相应的头文件,包括FreeRTOS.h和task.h。然后,我们定义一个LED任务函数taskLED,用于控制LED的点亮和熄灭。 c #include <stdio.h> #include "freertos/FreeRTOS.h" #include "freertos/task.h" // LED任务函数 void taskLED(void *pvParameters) { while (1) { // 控制LED点亮 // 等待1000毫秒 // 控制LED熄灭 // 等待1000毫秒 } } void app_main() { // 创建一个LED任务 xTaskCreate(&taskLED, "LED Task", 2048, NULL, 1, NULL); // 启动调度器 vTaskStartScheduler(); } 在taskLED函数中,我们可以使用GPIO库函数来控制LED的点亮和熄灭。在这个示例中,我们使用了一个无限循环来连续地点亮和熄灭LED,并使用vTaskDelay函数来设置等待时间。 在app_main函数中,我们使用xTaskCreate函数创建了一个LED任务,指定了任务函数taskLED以及任务的栈大小。然后,我们调用vTaskStartScheduler函数来启动FreeRTOS的任务调度器。 当程序运行时,LED任务将会循环地控制LED的点亮和熄灭。
在FreeRTOS的启动流程中,首先在main函数中进行硬件初始化、RTOS系统初始化,并创建所有的任务。然后,启动RTOS调度器,任务调度器会根据任务的优先级进行选择,开始多任务调度。在FreeRTOS系统上电后,会先调用复位函数Reset_Handle,然后调用C库函数__main,主要是为了初始化系统的堆和栈,最后调用C中的main函数。在main函数中,对硬件设备和系统进行初始化,然后创建任务。接下来,启动任务调度器,任务调度器是FreeRTOS实时操作系统的核心,负责任务切换。调度器会完成一些任务,如创建空闲任务、创建定时器服务任务、关闭中断,并将变量xSchedulerRunning设置为pdTRUE,表示调度器开始运行。然后,使用调度函数xPortStartScheduler()来初始化与调度器启动相关的硬件。接下来,使用函数prvStartFirstTask()来启动第一个任务,该函数主要用来使能中断,并使用SVC异常来启动第一个任务。最后,使用vPortSVCHandler()函数从第一个任务的进程栈中出栈。123 #### 引用[.reference_title] - *1* [FreeRTOS的启动流程](https://blog.csdn.net/qq_42413161/article/details/130997035)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [FreeRTOS任务启动流程实践](https://blog.csdn.net/Yoolell/article/details/123153113)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
您好!对于使用STM32CubeMX和FreeRTOS来配置和使用串口,您可以按照以下步骤进行操作: 1. 打开STM32CubeMX并创建一个新的工程。 2. 选择您的目标STM32微控制器,并确保启用了FreeRTOS支持。 3. 在"Pinout & Configuration"选项卡中,选择您要使用的串口引脚。 4. 在"Configuration"选项卡中,配置串口的参数,例如波特率、数据位、停止位和奇偶校验等。 5. 在"Middleware"选项卡中,启用USART或UART的中断模式或DMA模式,具体取决于您的需求。 6. 生成代码并导出到您的开发环境(例如Keil、IAR或TrueSTUDIO等)。 7. 在生成的代码中,找到FreeRTOS任务的配置文件(通常是freertos.c或main.c),并添加一个任务来处理串口通信。 8. 在该任务中使用HAL库函数来初始化和控制串口。 以下是一个简单的示例代码,展示了如何在FreeRTOS任务中使用HAL库函数来发送和接收串口数据: c #include "stm32f4xx_hal.h" // FreeRTOS任务函数 void USART_Task(void *pvParameters) { // 初始化串口 USART_HandleTypeDef huart; huart.Instance = USART1; huart.Init.BaudRate = 115200; huart.Init.WordLength = UART_WORDLENGTH_8B; huart.Init.StopBits = UART_STOPBITS_1; huart.Init.Parity = UART_PARITY_NONE; huart.Init.Mode = UART_MODE_TX_RX; huart.Init.HwFlowCtl = UART_HWCONTROL_NONE; HAL_UART_Init(&huart); while (1) { // 发送数据 uint8_t data[] = "Hello, World!"; HAL_UART_Transmit(&huart, data, sizeof(data), HAL_MAX_DELAY); // 接收数据 uint8_t rxData[10]; HAL_UART_Receive(&huart, rxData, sizeof(rxData), HAL_MAX_DELAY); // 处理接收到的数据... // 任务延时 vTaskDelay(pdMS_TO_TICKS(1000)); } } int main(void) { // FreeRTOS任务创建 xTaskCreate(USART_Task, "USART_Task", configMINIMAL_STACK_SIZE, NULL, tskIDLE_PRIORITY + 1, NULL); // FreeRTOS内核启动 vTaskStartScheduler(); while (1) { // 如果任务创建失败,进入这里处理 } } 请注意,上述代码仅为示例,您可能需要根据您的特定需求进行适当的修改。 希望这能帮到您!如有更多问题,请随时提问。
FreeRTOS提供了一个名为FreeRTOS+FAT的文件系统组件,它可以与许多不同的存储设备一起使用,包括SD卡、NOR Flash、SPI Flash、RAM磁盘等。 在使用FreeRTOS+FAT之前,你需要先按照以下步骤进行配置: 1. 选择一个适当的存储设备,并准备好相应的硬件和驱动程序。 2. 在FreeRTOS中启用文件系统功能。你可以通过在FreeRTOSConfig.h文件中定义"FF_FS_REENTRANT"宏来启用此功能。 3. 配置文件系统。你需要创建一个名为“ffconf.h”的文件,并在其中定义适当的常量和选项,以便FreeRTOS+FAT能够正确地工作。你可以参考FreeRTOS+FAT提供的示例文件进行配置。 4. 初始化文件系统。你需要在启动时调用ff_mount()函数来将文件系统挂载到指定的存储设备上。 5. 使用文件系统。一旦文件系统被成功挂载,你就可以使用标准的C库函数(如fopen()、fread()、fwrite()等)来访问文件系统中的文件了。 以下是一个使用FreeRTOS+FAT访问SD卡的示例代码: c #include "ff_headers.h" // 定义SD卡的SPI总线 #define SD_SPI_BUS 0 // 定义SD卡的SPI片选引脚 #define SD_SPI_CS_PIN 10 // 定义SD卡的挂载点 #define SD_MOUNT_POINT "/sdcard" void sdcard_task(void *pvParameters) { FIL file; FRESULT res; // 初始化SD卡的SPI总线 spi_bus_config_t spi_cfg = { .mosi_io_num = 23, .miso_io_num = 19, .sclk_io_num = 18, .quadwp_io_num = -1, .quadhd_io_num = -1, .max_transfer_sz = 4096, }; spi_bus_initialize(SD_SPI_BUS, &spi_cfg, 1); // 初始化SD卡的SPI设备 spi_device_interface_config_t dev_cfg = { .clock_speed_hz = 10 * 1000 * 1000, .mode = 0, .cs_io_num = SD_SPI_CS_PIN, .queue_size = 1, }; spi_device_handle_t spi_handle; spi_bus_add_device(SD_SPI_BUS, &dev_cfg, &spi_handle); // 挂载SD卡 res = ff_mount(&SD_SPI_BUS, SD_MOUNT_POINT, 1); if (res != FR_OK) { printf("Failed to mount SD card: %d\n", res); return; } // 打开文件 res = f_open(&file, "/sdcard/test.txt", FA_READ); if (res != FR_OK) { printf("Failed to open file: %d\n", res); return; } // 读取文件内容 char buf[128]; UINT bytes_read; res = f_read(&file, buf, sizeof(buf), &bytes_read); if (res != FR_OK) { printf("Failed to read file: %d\n", res); return; } // 关闭文件 f_close(&file); // 卸载SD卡 ff_unmount(SD_MOUNT_POINT); } 需要注意的是,FreeRTOS+FAT是一个相对底层的文件系统组件,使用起来可能会比较繁琐。如果你只需要简单地读写文件,建议使用更高层次的文件系统库,如FatFS。

最新推荐

定制linux内核(linux2.6.32)汇编.pdf

定制linux内核(linux2.6.32)汇编.pdf

管理建模和仿真的文件

管理Boualem Benatallah引用此版本:布阿利姆·贝纳塔拉。管理建模和仿真。约瑟夫-傅立叶大学-格勒诺布尔第一大学,1996年。法语。NNT:电话:00345357HAL ID:电话:00345357https://theses.hal.science/tel-003453572008年12月9日提交HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaire

图像处理进阶:基于角点的特征匹配

# 1. 图像处理简介 ## 1.1 图像处理概述 图像处理是指利用计算机对图像进行获取、存储、传输、显示和图像信息的自动化获取和处理技术。图像处理的主要任务包括图像采集、图像预处理、图像增强、图像复原、图像压缩、图像分割、目标识别与提取等。 ## 1.2 图像处理的应用领域 图像处理广泛应用于医学影像诊断、遥感图像处理、安检领域、工业自动化、计算机视觉、数字图书馆、人脸识别、动作捕捉等多个领域。 ## 1.3 图像处理的基本原理 图像处理的基本原理包括数字图像的表示方式、基本的图像处理操作(如灰度变换、空间滤波、频域滤波)、图像分割、特征提取和特征匹配等。图像处理涉及到信号与系统、数字

Cannot resolve class android.support.constraint.ConstraintLayout

如果您在Android Studio中遇到`Cannot resolve class android.support.constraint.ConstraintLayout`的错误,请尝试以下解决方案: 1. 确认您的项目中是否添加了ConstraintLayout库依赖。如果没有,请在您的build.gradle文件中添加以下依赖: ```groovy dependencies { implementation 'com.android.support.constraint:constraint-layout:<version>' } ``` 其中`<version>`为您想要

Solaris常用命令_多路径配置.doc

Solaris常用命令_多路径配置.doc

"互动学习:行动中的多样性与论文攻读经历"

多样性她- 事实上SCI NCES你的时间表ECOLEDO C Tora SC和NCESPOUR l’Ingén学习互动,互动学习以行动为中心的强化学习学会互动,互动学习,以行动为中心的强化学习计算机科学博士论文于2021年9月28日在Villeneuve d'Asq公开支持马修·瑟林评审团主席法布里斯·勒菲弗尔阿维尼翁大学教授论文指导奥利维尔·皮耶昆谷歌研究教授:智囊团论文联合主任菲利普·普雷教授,大学。里尔/CRISTAL/因里亚报告员奥利维耶·西格德索邦大学报告员卢多维奇·德诺耶教授,Facebook /索邦大学审查员越南圣迈IMT Atlantic高级讲师邀请弗洛里安·斯特鲁布博士,Deepmind对于那些及时看到自己错误的人...3谢谢你首先,我要感谢我的两位博士生导师Olivier和Philippe。奥利维尔,"站在巨人的肩膀上"这句话对你来说完全有意义了。从科学上讲,你知道在这篇论文的(许多)错误中,你是我可以依

Apache HTTP Server动静资源分离下的Nginx对比分析

# 1. 引言 ## 1.1 背景介绍 在Web服务器领域,Apache HTTP Server(简称Apache)一直是广泛应用的开源软件之一,提供了稳定、可靠的服务。随着网络技术的不断发展,网站对于动态和静态资源的需求也越来越复杂。为了更好地提升网站的性能和效率,动静资源分离成为了一个重要的优化方向。而在动静资源分离方面,Nginx作为备受关注的替代品备受瞩目。 ## 1.2 目的和意义 本文旨在探讨Apache HTTP Server和Nginx在动静资源分离方面的特点及优势,通过对比它们在性能、效率和安全性方面的表现,帮助读者更好地了解如何在实际应用中选择合适的服务器软件。

Html css JS promise await 形式 实现红绿灯变化

好的,我了解你的问题。这里我将使用HTML、CSS和JavaScript语言来实现红绿灯的promise和await实现。 首先,我们需要定义一个HTML页面,包含一个div元素和三个button元素。这个div元素用来模拟红绿灯,三个button元素用来控制红绿灯的变化。 ```html <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>红绿灯</title> <style> #light { width: 100px; height: 100px; border

LOGO语言辅导.ppt

LOGO语言辅导.ppt

关系数据表示学习

关系数据卢多维奇·多斯桑托斯引用此版本:卢多维奇·多斯桑托斯。关系数据的表示学习机器学习[cs.LG]。皮埃尔和玛丽·居里大学-巴黎第六大学,2017年。英语。NNT:2017PA066480。电话:01803188HAL ID:电话:01803188https://theses.hal.science/tel-01803188提交日期:2018年HAL是一个多学科的开放存取档案馆,用于存放和传播科学研究论文,无论它们是否被公开。论文可以来自法国或国外的教学和研究机构,也可以来自公共或私人研究中心。L’archive ouverte pluridisciplinaireUNIVERSITY PIERRE和 MARIE CURIE计算机科学、电信和电子学博士学院(巴黎)巴黎6号计算机科学实验室D八角形T HESIS关系数据表示学习作者:Ludovic DOS SAntos主管:Patrick GALLINARI联合主管:本杰明·P·伊沃瓦斯基为满足计算机科学博士学位的要求而提交的论文评审团成员:先生蒂埃里·A·退休记者先生尤尼斯·B·恩