当前位置: 首页 > 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的小灯在闪烁了。其他的地方我也不懂呢?今天第一天开始学习。

http://www.lryc.cn/news/367872.html

相关文章:

  • 从零入手人工智能(2)——搭建开发环境
  • Web前端指南
  • AI菜鸟向前飞 — LangChain系列之十七 - 剖析AgentExecutor
  • nodejs 第三方库 exiftool-vendored
  • docker部署redis实践
  • Web前端学习之路:深入探索学习时长与技能进阶的奥秘
  • 如何不用命令创建用户
  • 基于Python实现可视化分析中国500强排行榜数据的设计与实现
  • VUE3 学习笔记(13):VUE3 下的Element-Plus基本使用
  • MySql数据库安全加固
  • Nginx(title小图标)修改方法
  • iOS 17.5中的一个漏洞
  • 如何在 iPhone 上恢复已删除的短信
  • 矩阵练习1
  • 【C++ | 拷贝赋值运算符函数】一文了解C++的 拷贝赋值运算符函数
  • Linux网络安全
  • Django 视图类
  • 【Java面试】十七、并发篇(上)
  • 七天进阶elasticsearch[one]
  • 全新抖音快手小红书视频解析去水印系统网站源码
  • 图解 Python 编程(12) | 文件和编码方式
  • CSDN个人主页动态地图(前端/后端)
  • GUI编程-01
  • Linux网络-自定义协议、序列化和反序列化、网络计算服务器的实现和Windows端客户端
  • Hive知识体系保姆级教程
  • 三大网络简介
  • Element-UI全面入门与实战技巧
  • 第103天: 权限提升-Linux 系统辅助项目脏牛Dirty内核漏洞SUIDGUID
  • 如何用群晖当异地组网服务器?
  • 文件怎么去重?5个技巧,教你删除重复文件!