freeRTOS移植成功
今天来学习如何移植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);
}
}
freeRTOS移植成功的更多相关文章
- 基于IAR平台FreeRTOS移植
开始这篇文章之前先简单说明一下,我使用的MCU是我们公司自主研发的ACH1180芯片,和STM32差不多,都是Cortex-M4的核,所以移植的过程参考了STM32移植的步骤. 1.解压FreeRT ...
- nRF52832 SDK15.3.0 基于ble_app_uart demo FreeRTOS移植
参考资料:https://blog.csdn.net/u010860832/article/details/86235993 这里把移植经验记录下来,供有需要的同学参考,有不对的地方也请大家批评指正. ...
- FreeRTOS移植到STM32上的移植过程
所有的单片机都是顺序执行的,而对于多任务而言就显得力不从心了,虽然在一些小项目中可以通过定时器来实现,但这种实现方式没有实时性,一旦任务需要在规定时间内做出响应,那只能通过实时操作系统来完成了.在很多 ...
- FreeRTOS移植EasyFlash
1. EasyFlash Easyflash可以让 Flash 成为小型 KV 数据库(Key-Value) GitHub: https://github.com/armink/SFUD Gitee: ...
- FreeRTOS 移植到WIN10
背景 标题表述的不准确,大意是移植到WIN10的PC机,Intel I5. 最近因为项目接触了FreeRTOS 实时操作系统,想对这个操作系统有一个更深入的了解,所以决定下载源码看看,下面这个链接的随 ...
- 1、FreeRTOS移植
1.FreeRTOS目录结构 FreeRTOS FreeRTOS简略目录如下: ├─FreeRTOS │ ├─Demo // 各种开发工具的完整Demo,开发者可以方便的以此搭建出自己的项目,甚至直接 ...
- FreeRtos——移植
现在准备的简单程序LED灯的工程目录中增加freertos文件夹: 在 source目录下的portable目录下只留下下面的文件夹: 为什么呢? 把对应文件移植在工程中之后,添加头文件路径如下图: ...
- STM32F407使用MFRC522射频卡调试及程序移植成功
版权声明:转载请注明出处,谢谢 https://blog.csdn.net/Kevin_8_Lee/article/details/88865556 或 https://www.cnblogs.co ...
- 超详细的FreeRTOS移植全教程——基于srm32
### 准备 在移植之前,我们首先要获取到FreeRTOS的官方的源码包.这里我们提供两个下载链接: > 一个是官网:http://www.freertos.org/ > 另外一个是代码托 ...
- 最新QT4.8+kernel_3.2.5+uboot_2010.06+tslib移植成功-问题小结
2012-02-19 21:34:13 都是从源码下载然后自己修改,使用与TQ2440,之前uboot其实已经完成了.但是yaffs2没带起来.现在回头看来是很简单的了.bootargs参数中我设置成 ...
随机推荐
- jmeter 之性能分布式压测
背景: 当并发量达到一定数量时,单台测试设备不足以支撑,甚至会出现内存溢出等情况,解决这个问题就可用分布式测试,使用多台测试设备来达到更大的用户并发数. 原理: 1.一台设备作为调度机(master) ...
- JDBC的一些基础认识,写的不是特别完善,希望大家看的时候别太介意嘿嘿嘿
JDBC 1,概念和本质 Java DataBase Connectivity Java 数据库链接, Java语言操作数据库 JDBC的本质:是一套操作所有关系型数据库的规则(接口)而JDBC所有的 ...
- 【转载】SQL SERVER 表变量与临时表的优缺点
什么情况下使用表变量?什么情况下使用临时表? -- 表变量: DECLARE @tb table(id int identity(1,1), name varchar(100)) INSERT @tb ...
- MarkDown语法----纯文本格式的标记语言
一.基本语法 1.标题 一级标题: "# + 空格 + 标题内容" 二级标题: "## + 空格 + 标题内容" .... 2.字体 粗体: "**+ ...
- [WPF]创建系统栏小图标
隐藏窗体任务栏图标 /// <summary> /// MainWindow.xaml 的交互逻辑 /// </summary> public partial class Ma ...
- 《Effective C++》构造、析构、赋值运算
Item 05:了解C++默默编写并调用了哪些函数 总结:编译器可以暗自为class创建default 构造函数.copy构造函数.copy assignment操作符,以及析构函数. (这一小节比较 ...
- 一次JVM GC长暂停的排查过程
作者:京东科技 徐传乐 背景 在高并发下,Java程序的GC问题属于很典型的一类问题,带来的影响往往会被进一步放大.不管是「GC频率过快」还是「GC耗时太长」,由于GC期间都存在Stop The Wo ...
- LCA学习笔记(原洛谷文章)
本文原发布时间:\(\texttt{2022-05-21 14:11:52}\) 简介 最经公共祖先 \(\operatorname{LCA}(a,b)=c\),指的是在一棵树上节点 \(a\) 与 ...
- 狂神的springboot课程员工管理系统
文章目录 springboot-kuangshen 介绍 功能展示 登陆页面 首页 员工管理页面 添加员工信息 删除员工信息 修改员工信息 参考资料 springboot-kuangshen 介绍 狂 ...
- 通过Canal将云上MySQL数据同步到华为云ES(CSS)中
背景: A部门想将mysql中多张表join成一个sql查询语句,然后将结果同步到es中供搜索使用 环境信息: 源端mysql在阿里云上,有公网ip 目标端es在华为云上,三节点 操作步骤与目的: 配 ...