今天来学习如何移植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移植成功的更多相关文章

  1. 基于IAR平台FreeRTOS移植

     开始这篇文章之前先简单说明一下,我使用的MCU是我们公司自主研发的ACH1180芯片,和STM32差不多,都是Cortex-M4的核,所以移植的过程参考了STM32移植的步骤. 1.解压FreeRT ...

  2. nRF52832 SDK15.3.0 基于ble_app_uart demo FreeRTOS移植

    参考资料:https://blog.csdn.net/u010860832/article/details/86235993 这里把移植经验记录下来,供有需要的同学参考,有不对的地方也请大家批评指正. ...

  3. FreeRTOS移植到STM32上的移植过程

    所有的单片机都是顺序执行的,而对于多任务而言就显得力不从心了,虽然在一些小项目中可以通过定时器来实现,但这种实现方式没有实时性,一旦任务需要在规定时间内做出响应,那只能通过实时操作系统来完成了.在很多 ...

  4. FreeRTOS移植EasyFlash

    1. EasyFlash Easyflash可以让 Flash 成为小型 KV 数据库(Key-Value) GitHub: https://github.com/armink/SFUD Gitee: ...

  5. FreeRTOS 移植到WIN10

    背景 标题表述的不准确,大意是移植到WIN10的PC机,Intel I5. 最近因为项目接触了FreeRTOS 实时操作系统,想对这个操作系统有一个更深入的了解,所以决定下载源码看看,下面这个链接的随 ...

  6. 1、FreeRTOS移植

    1.FreeRTOS目录结构 FreeRTOS FreeRTOS简略目录如下: ├─FreeRTOS │ ├─Demo // 各种开发工具的完整Demo,开发者可以方便的以此搭建出自己的项目,甚至直接 ...

  7. FreeRtos——移植

    现在准备的简单程序LED灯的工程目录中增加freertos文件夹: 在 source目录下的portable目录下只留下下面的文件夹: 为什么呢? 把对应文件移植在工程中之后,添加头文件路径如下图: ...

  8. STM32F407使用MFRC522射频卡调试及程序移植成功

    版权声明:转载请注明出处,谢谢 https://blog.csdn.net/Kevin_8_Lee/article/details/88865556 或  https://www.cnblogs.co ...

  9. 超详细的FreeRTOS移植全教程——基于srm32

    ### 准备 在移植之前,我们首先要获取到FreeRTOS的官方的源码包.这里我们提供两个下载链接: > 一个是官网:http://www.freertos.org/ > 另外一个是代码托 ...

  10. 最新QT4.8+kernel_3.2.5+uboot_2010.06+tslib移植成功-问题小结

    2012-02-19 21:34:13 都是从源码下载然后自己修改,使用与TQ2440,之前uboot其实已经完成了.但是yaffs2没带起来.现在回头看来是很简单的了.bootargs参数中我设置成 ...

随机推荐

  1. 11、ON DUPLICATE KEY UPDATE实现插入更新操作

    一.插入与更新操作: MySQL中,采用ON DUPLICATE KEY UPDATE语句对不存在的数据进行INSERT插入操作,对已存在的数据进行UPDATE更新操作: 总结: 1.ON DUPLI ...

  2. [深度学习] imgaug边界框增强笔记

    imgaug边界框增强笔记主要是讲述基于imgaug库对目标检测图像的边界框进行图像增强.本文需要掌握imgaug库的基本使用,imgaug库的基本使用见[深度学习] imgaug库使用笔记. 文章目 ...

  3. [常用工具] OpenCV获取网络摄像头实时视频流

    所需要硬件及软件环境: python 3/OpenCV3.4 or C++11/OpenCV3.4 1 RTSP协议 RTSP (Real Time Streaming Protocol),是一种语法 ...

  4. 有意思,小程序还可以一键生成App!

    小程序≠微信小程序 说到小程序,大部分同学的第一反应,可能是微信小程序.支付宝小程序,确实,小程序的概念深入人心,并且已经被约定俗成的绑定到某些互联网公司的 APP 上. 但是,"小程序&q ...

  5. C语言:使用malloc申请一个二级指针,外层为3个元素,内层为5个元素。使用并释放。

    //使用malloc申请一个二级指针,外层为3个元素,内层为5个元素.使用并释放. #include"head.h" int main() { int **p = (int **) ...

  6. 通过Terraform创建GCP Pubsub

    1 简介 Terraform是管理许多平台的基础设施的工具,如AWS.GCP和Azure.这篇文章将讲解如何通过Terraform来管理GCP Pub/Sub. 创建GCP项目请参考:初始化一个GCP ...

  7. 刷题笔记——2758.打印ASCII码 & 2759.打印字符

    题目 2758.打印ASCII码 2759.打印字符 代码 while True: try: a = input() print(ord(a)) except: break while True: t ...

  8. Scrapy爬虫框架快速入门

    安装scrapy pip install scrapy -i https://pypi.douban.com/simple/ 安装过程可能遇到的问题 版本问题导致一些辅助库没有安装好,需要手动下载并安 ...

  9. GraalVM和Spring Native尝鲜,一步步让Springboot启动飞起来,66ms完成启动

    简介 GraalVM是高性能的JDK,支持Java/Python/JavaScript等语言.它可以让Java变成二进制文件来执行,让程序在任何地方运行更快.这或许是Java与Go的一场战争? 下载安 ...

  10. java 启动查看jar包加载顺序并设置classpath

    本文为博主原创,转载请注明出处: 1.idea查看jar包加载顺序 jdk8 可以通过     -XX:+TraceClassPaths    参数进行查看jar包的加载顺序 jdk11 可以通过  ...