本文原创作者初晴,感谢大佬提供的PDF,本文经授权后整理发布。 微软于最近开源了 ThreadX 操作系统,关于这个RTOS有多牛逼,请看硬汉哥的这篇文章: 本文中使用的开发板为小熊派IoT开发板,主控为STM32L431RCT6: 在移植之前,请确保你的MDK版本至少是5.30,否则会失败,可以在硬汉哥的不限速镜像下载: 请准备一份可以正常使用printf串口输出的裸机工程,本文中我使用cubemx生成。 ThreadX源码请访问开源仓库获取:https://github.com/azure-rtos 新建 添加头文件路径: ① 修改AC6的编译器: ⑤ 屏蔽四个函数: ① 包含进来threadx的头文件: ② 定义两个线程: ③ 在main函数初始化完成之后启动内核: 编译,下载,在串口终端查看结果: 接收更多精彩文章及资源推送,欢迎订阅我的微信公众号:『mculover666』。
1. 前言
2. 复制ThreadX源码
3. 添加源码到MDK工程
threadX/common
分组,添加threadX/common/src下的所有c文件:
新建threadX/ports
分组,添加 threadXportscortex_m4gnusrc 下的8个S文件(除去tx_vector_table_sample.c
):
设置ASM汇编头文件路径:
4. 修改适配
② 修改tx_initialize_low_level_sample.S中的时钟频率和系统工作频率:
③ 修改tx_initialize_low_level_sample.S文件,设置全局标号__RAM_segment_used_end__
:
④ 修改tx_initialize_low_level_sample.S文件,按Ctrl+H
进行替换,将全局标号_vectors
全部替换为大写,注意多了一个下划线:
⑥ 去除原有stm32l4xx_it.c中的PendSV和Systick中断服务函数:
至此,移植完成,编译会提示有一个错误:
这个函数是留给用户自己定义的,接下来会创建。5. 编写应用代码
/* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ #include <stdio.h> #include "tx_api.h" /* USER CODE END Includes */
/* Private user code ---------------------------------------------------------*/ /* USER CODE BEGIN 0 */ TX_THREAD my_thread1; TX_THREAD my_thread2; void my_thread1_entry(ULONG thread_input) { /* Enter into a forever loop. */ while(1) { printf("threadx 1 application running...rn"); /* Sleep for 1 tick. */ tx_thread_sleep(1000); } } void my_thread2_entry(ULONG thread_input) { /* Enter into a forever loop. */ while(1) { printf("threadx 2 application running...rn"); /* Sleep for 1 tick. */ tx_thread_sleep(1000); } } void tx_application_define(void *first_unused_memory) { /* Create my_thread! */ tx_thread_create(&my_thread1, "My Thread 1", my_thread1_entry, 0x1234, first_unused_memory, 1024, 3, 3, TX_NO_TIME_SLICE, TX_AUTO_START); tx_thread_create(&my_thread2, "My Thread 2", my_thread2_entry, 0x1234, first_unused_memory+1024, 1024, 1, 1, TX_NO_TIME_SLICE, TX_AUTO_START); }
/* USER CODE BEGIN 2 */ printf("threadX RTOS on BearPi IoT Boardrn"); /* Enter the ThreadX kernel. */ tx_kernel_enter( ); /* USER CODE END 2 */
赶快玩起来吧~
本网页所有视频内容由 imoviebox边看边下-网页视频下载, iurlBox网页地址收藏管理器 下载并得到。
ImovieBox网页视频下载器 下载地址: ImovieBox网页视频下载器-最新版本下载
本文章由: imapbox邮箱云存储,邮箱网盘,ImageBox 图片批量下载器,网页图片批量下载专家,网页图片批量下载器,获取到文章图片,imoviebox网页视频批量下载器,下载视频内容,为您提供.
阅读和此文章类似的: 全球云计算