freeRTOS移植成功
2024-09-08 16:58:10
今天来学习如何移植freeRTOS
也算是走了很多的坑,总算是把系统跑起来了
相关的教程网上也有比较详细的,本文主要说说自己踩的坑
一些汇编文件报错的问题
这个问题的原因是因为网上大部分的移植说明都是基于ARMCC编译器的,也就是针对complier5,但是我上来怼个complier6,一些扩展语言已经不支持了,所以会疯狂报错,对于这个问题有两种解决办法:第一:编译器版本选择5不就完事了吗,选择这种办法还是比较简单的,网上的移植说明大多也是基于这个版本。但是某些MDK编译器版本只有6的人就不那么友好了,总不能为了个RTOS再重装软件吧,那有么有基于complier6也就是ARNCLANG的移植呢?(说明一下,大部分报错都是接口文件的报错,也就是heap_4.c、port.c、 port.h这几个文件的报错)其实freeTOS官方团队怎么能没考虑到呢,只需要把接口文件选择GCC目录下面的就可以了,好了,本文结束!
再往下就是用伪代码方式写写任务创建的过程以及任务挂起恢复的函数
static void AppTaskCreate(void);
static void usartTask1(void* parameter);
static void usartTask2(void* parameter);
static TaskHandle_t usartTask1Handller_t = NULL;
static TaskHandle_t usartTask2Handller_t = NULL;
AppTaskCreate();
vTaskStartScheduler();
void AppTaskCreate(void)
{
xTaskCreate( usartTask1, /* 任务函数 */
"usartTask1", /* 任务名 */
1024, /* 任务栈大小,单位word,也就是4字节 */
NULL, /* 任务参数 */
1, /* 任务优先级*/
&usartTask1Handller_t );
xTaskCreate( usartTask2, /* 任务函数 */
"usartTask2", /* 任务名 */
1024, /* 任务栈大小,单位word,也就是4字节 */
NULL, /* 任务参数 */
2, /* 任务优先级*/
&usartTask2Handller_t );
}
void usartTask1(void* parameter)
{
while(1)
{
printf("task1 is runing! \n");
vTaskDelay(1000);
}
}
void usartTask2(void* parameter)
{
uint8_t state=0;
while(1)
{
//按键按下,任务1挂起,再按下,任务1恢复
if(Key_Scan(GPIOC,GPIO_Pin_8) == 1)
{
if(state == 0)
{
state=1;
printf("suspend task1\n");
vTaskSuspend(usartTask1Handller_t);
}
else
{
state=0;
printf("resume task1\n");
vTaskResume(usartTask1Handller_t);
}
}
printf("this is task2 \n");
vTaskDelay(3000);
}
}
最新文章
- spool命令
- 浅谈T-SQL中的子查询
- 我的复杂的OpenCV编译之路(OpenCV3.1.0 + VS2010 + Win7)
- windows 搭建 solr 5.3.2
- 细说C#多线程那些事 - 线程同步和多线程优先级
- 仿写自己的一个加载语言包的L函数
- js算法
- 一个人的旅行(用小技巧转化为dijkstra算法)
- .htaccess Rewrite apache重写和配置
- 基于visual Studio2013解决算法导论之027hash表
- FileUpload类别FileUpload1.FileName和FileUpload1.PostedFile.FileName差异
- 3dmax 3dmax计算机要求 3dmax下载
- Tampermonkey-让百度云下载飞起来
- lua的table元类
- Android 访问 Webapi 更新UI
- 洛谷 P2341 [HAOI2006]受欢迎的牛 解题报告
- 用matplotlib制作的比较满意的蜡烛图
- IE9出现异常SCRIPT5011:不能执行已释放Script的代码
- java如何把文件转化成oracle的blob
- 取消word中所有超链接
热门文章
- Octave/Matlab初步学习
- Ng-Matero v15 正式发布
- linux配置本地yum源实现在局域网中在线安装软件包
- Js/Jq 截图并上传
- Java学习笔记:2022年1月13日(其一)
- 【大型软件开发】浅谈大型Qt软件开发(二)面向未来开发——来自未来的技术:COM组件。我如何做到让我们的教学模块像插件一样即插即用,以及为什么这么做。
- BC4-牛牛学说话之-浮点数
- 【Linux技术专题系列】「必备基础知识」一起探索和实践sftp配置之密钥方式登录
- Codeforces Round #601 (Div. 2) A-E
- [Codeforces Round #794 (Div. 2)] D. Linguistics