当前位置: 首页 > news >正文

STM32的FreeRtos的学习

首先就是去官网下载一个源文件:FreeRtos官网

下载下来的是一个zip文件,解压缩了。

然后再工程文件夹中创建个文件夹:

在这个文件夹中创建3个文件夹:

然后开始把下载下来的文件夹中的文件挑选出来放到我们的工程文件夹中:

至此所需要的文件就全部拷贝齐全了,接下来就是在工程中添加各个文件了。

最后三个文件夹的文件在工程中的分布如图:

接下来就是主程序了,其实过程就是:

1:声明一个任务句柄。

2:创建一个任务函数。

3:创建一个任务。

4:开启调度器。

#include "stm32f10x.h"                  // Device header
#include "freertos.h"      //包含freeRtos头文件
#include "task.h"           //包含task头文件TaskHandle_t myTaskHandler;   //声明一个任务句柄void myTask( void * arg)     //创建一个任务函数
{while(1)             //任务函数就是一个死循环{GPIO_ResetBits(GPIOC, GPIO_Pin_13);   //GPIO13口置0vTaskDelay(500);                      //延时500GPIO_SetBits(GPIOC, GPIO_Pin_13);     //GPIO13口置1vTaskDelay(500);                      //延时500}
}int main(void)
{RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);GPIO_InitTypeDef GPIO_InitStruct;GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStruct.GPIO_Pin = GPIO_Pin_13;GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;GPIO_Init(GPIOC, &GPIO_InitStruct);GPIO_ResetBits(GPIOC, GPIO_Pin_13);/*创建一个任务(第一个参数是任务函数名称,第二个参数是一个字符串,随便写第三个参数是任务堆栈大小,我定的是512第四个参数是任务传递参数,这里暂时不用写NULL第五个参数是任务优先级,可以随意设置,我设置的是2第六个参数是任务句柄)*/xTaskCreate(myTask, "myTask", 512, NULL, 2, &myTaskHandler); vTaskStartScheduler();   //开启调度器while(1){}
}

还需要在FreeRTOSConfig.h中添加几行宏定义:

#define xPortPendSVHandler                PendSV_Handler
#define vPortSVCHandler                   SVC_Handler
#define xPortSysTickHandler               SysTick_Handler

还要在stm32f10x_it.c文件中把刚刚宏定义的三个函数注释掉:107行    126行     135行

至此编译主函数下载到单片机中就能看到PC13的小灯在闪烁了。其他的地方我也不懂呢?今天第一天开始学习。

相关文章:

  • Spring Web MVC之过滤器Filter和拦截器HandlerInterceptor的区别和用法
  • Python第二语言(十、Python面向对象(上))
  • Java 类加载器与加载机制
  • 详解 Flink Table API 和 Flink SQL 之函数
  • 计算机网络(3) 字节顺序:网络字节序与IPv4
  • Stack详解(含动画演示)
  • Hutool有哪些常用方法
  • 服务架构的设计原则
  • DS1338/PT7C4338串行实时时钟-国产兼容RS4C1338
  • 如何免费用 Qwen2 辅助你翻译与数据分析?
  • Excel根据身份证号提取信息
  • C语言详解(预编译)
  • App推广效果分析,Xinstall助力精准优化
  • 【wiki知识库】06.文档管理页面的添加--前端Vue部分
  • 记录pytest中场景执行的token异常处理问题
  • Angular2开发踩坑系列-生产环境编译
  • echarts花样作死的坑
  • Git的一些常用操作
  • IDEA常用插件整理
  • JavaScript 奇技淫巧
  • js 实现textarea输入字数提示
  • Linux CTF 逆向入门
  • node学习系列之简单文件上传
  • Otto开发初探——微服务依赖管理新利器
  • 爱情 北京女病人
  • 关键词挖掘技术哪家强(一)基于node.js技术开发一个关键字查询工具
  • 技术发展面试
  • 利用jquery编写加法运算验证码
  • 买一台 iPhone X,还是创建一家未来的独角兽?
  • 你不可错过的前端面试题(一)
  • 少走弯路,给Java 1~5 年程序员的建议
  • 深入体验bash on windows,在windows上搭建原生的linux开发环境,酷!
  • 我与Jetbrains的这些年
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • 再次简单明了总结flex布局,一看就懂...
  • 你学不懂C语言,是因为不懂编写C程序的7个步骤 ...
  • #13 yum、编译安装与sed命令的使用
  • (1)常见O(n^2)排序算法解析
  • (Matlab)基于蝙蝠算法实现电力系统经济调度
  • (补充)IDEA项目结构
  • (多级缓存)缓存同步
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (分布式缓存)Redis分片集群
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (一)80c52学习之旅-起始篇
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转)编辑寄语:因为爱心,所以美丽
  • (转)创业的注意事项
  • (转)一些感悟
  • . NET自动找可写目录
  • .NET BackgroundWorker
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .net core控制台应用程序初识
  • .NET 的静态构造函数是否线程安全?答案是肯定的!