STM32F103x/Free RTOS系统学习笔记之环境搭建-CXM

2023-11-21 17:20

本文主要是介绍STM32F103x/Free RTOS系统学习笔记之环境搭建-CXM,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

前言

越学到后面越感觉会的越少,为什么要引入嵌入式操作系统呢,因为现在一直局限于while大循环里,能做的功能十分有限,至于为什么要选择Free RTOS 系统是因为这个系统目前比较成熟且使用的人很多,资源也比较多

这一篇主要会记录我是如何搭建环境

Free RTOS系统是嵌入式的操作系统,它的特点在于它的实时性,其任务调度的机制十分完善。

开发环境是keil 5

使用芯片STM32F103x,


目录

前言

STM32F103C6官方库搭建

1.新建文件夹

2.下载拷贝官方库

3.往项目里面移植官方库

4.主函数尝试调用官方函数库

5.编译

 Free RTOS 系统添加

1.移植文件

​        .portable

         .RVDS

         .转移文件到项目里

 2.将系统文件添加到工程中

 3.编译测试


STM32F103C6官方库搭建

stm32存在于两种方式一种是直接操作寄存器,一种就是使用他的官方库。

1.新建文件夹

2.下载拷贝官方库

ST官网https://www.stmicroelectronics.com.cn/content/st_com/zh.html

 

 

 然后下载完成之后 解压 Libraries 就是我们需要的文件库

 然后添加进我们的工程文件夹里开始创建我们的项目

3.往项目里面移植官方库

 这里要注意的是在Libraries\CMSIS\CM3\DeviceSupport\ST\STM32F10x\startup\arm目录里面需要添加startup_stm32f10x_hd.s 否则无法正常运行

 记得在C/C++里面头文件目录添加上

4.主函数尝试调用官方函数库

随便写一段

int main(void)
{GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;				 //LED0-->PA.8 端口配置GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度为50MHzGPIO_Init(GPIOA, &GPIO_InitStructure);					 //根据设定参数初始化GPIOA.8while (1){GPIO_SetBits(GPIOA,GPIO_Pin_8);						 //PA.8 输出高;	}
}

5.编译

完成架构后开始编译 发现居多的警告和报错这个原因是因为库是3.0需要在C/C++,Define写上USE_STDPERIPH_DRIVER,

 然后在进行编译,成功无报错

 Free RTOS 系统添加

官网下载地址https://www.freertos.org/a00104.html

1.移植文件

        .portable

在Source下portable中只保留这三个文件其余删掉

         .RVDS

保留和外卖芯片对应的CM3就行

         .转移文件到项目里

 2.将系统文件添加到工程中

将源码添加到工程文件夹中

 

 这个heap是五种内存管理的方法

 头文件添加

 到这里还缺一个FreeRTOSConfig.h 配置文件

这个文件在官方案例中可以找到 我们直接在相同芯片版本的案例中复制一个

 放进外部库里就可以

 3.编译测试

有一个错误  查了一下只需要 吧值从0改成1就行

但是我查看了他的案例并没有改成1此处

通过keil查询

和这个调用有关 如果改为0则报错  

#ifndef INCLUDE_xTaskGetCurrentTaskHandle#define INCLUDE_xTaskGetCurrentTaskHandle    0
#endif

 修改完成后成功编译

 开始使用一下任务调度

#include "stm32f10x.h"
#include "FreeRTOS.h"
#include "task.h"void led_end(void);
TaskHandle_t StartTask_Handler;
int main(void)
{xTaskCreate((TaskFunction_t )led_end,            //任务函数(const char*    )"led_end",          //任务名称(uint16_t       )120,        //任务堆栈大小(void*          )NULL,                  //传递给任务函数的参数(UBaseType_t    )1,       //任务优先级(TaskHandle_t*  )&StartTask_Handler);   //任务句柄              vTaskStartScheduler();          //开启任务调度
}void led_end(void)
{int8_t a=1;if(a==1){GPIO_InitTypeDef GPIO_InitStructure; GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;				 //LED0-->PA.8 端口配置GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; 		 //推挽输出GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;		 //IO口速度为50MHzGPIO_Init(GPIOA, &GPIO_InitStructure);					 //根据设定参数初始化GPIOA.8a--;}GPIO_SetBits(GPIOA,GPIO_Pin_8);						 //PA.8 输出高;	}

最尴尬的事情 C6 内存不够溢出了

更换成C6以上

完美解决 

学习的正点原子哥的Free RTOS移植手册PDF 写的非常好

这篇关于STM32F103x/Free RTOS系统学习笔记之环境搭建-CXM的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/403846

相关文章

Python FastAPI+Celery+RabbitMQ实现分布式图片水印处理系统

《PythonFastAPI+Celery+RabbitMQ实现分布式图片水印处理系统》这篇文章主要为大家详细介绍了PythonFastAPI如何结合Celery以及RabbitMQ实现简单的分布式... 实现思路FastAPI 服务器Celery 任务队列RabbitMQ 作为消息代理定时任务处理完整

使用Python实现快速搭建本地HTTP服务器

《使用Python实现快速搭建本地HTTP服务器》:本文主要介绍如何使用Python快速搭建本地HTTP服务器,轻松实现一键HTTP文件共享,同时结合二维码技术,让访问更简单,感兴趣的小伙伴可以了... 目录1. 概述2. 快速搭建 HTTP 文件共享服务2.1 核心思路2.2 代码实现2.3 代码解读3.

Linux系统中卸载与安装JDK的详细教程

《Linux系统中卸载与安装JDK的详细教程》本文详细介绍了如何在Linux系统中通过Xshell和Xftp工具连接与传输文件,然后进行JDK的安装与卸载,安装步骤包括连接Linux、传输JDK安装包... 目录1、卸载1.1 linux删除自带的JDK1.2 Linux上卸载自己安装的JDK2、安装2.1

MySQL双主搭建+keepalived高可用的实现

《MySQL双主搭建+keepalived高可用的实现》本文主要介绍了MySQL双主搭建+keepalived高可用的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,... 目录一、测试环境准备二、主从搭建1.创建复制用户2.创建复制关系3.开启复制,确认复制是否成功4.同

Linux系统之主机网络配置方式

《Linux系统之主机网络配置方式》:本文主要介绍Linux系统之主机网络配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、查看主机的网络参数1、查看主机名2、查看IP地址3、查看网关4、查看DNS二、配置网卡1、修改网卡配置文件2、nmcli工具【通用

Linux系统之dns域名解析全过程

《Linux系统之dns域名解析全过程》:本文主要介绍Linux系统之dns域名解析全过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、dns域名解析介绍1、DNS核心概念1.1 区域 zone1.2 记录 record二、DNS服务的配置1、正向解析的配置

Linux系统中配置静态IP地址的详细步骤

《Linux系统中配置静态IP地址的详细步骤》本文详细介绍了在Linux系统中配置静态IP地址的五个步骤,包括打开终端、编辑网络配置文件、配置IP地址、保存并重启网络服务,这对于系统管理员和新手都极具... 目录步骤一:打开终端步骤二:编辑网络配置文件步骤三:配置静态IP地址步骤四:保存并关闭文件步骤五:重

Centos环境下Tomcat虚拟主机配置详细教程

《Centos环境下Tomcat虚拟主机配置详细教程》这篇文章主要讲的是在CentOS系统上,如何一步步配置Tomcat的虚拟主机,内容很简单,从目录准备到配置文件修改,再到重启和测试,手把手带你搞定... 目录1. 准备虚拟主机的目录和内容创建目录添加测试文件2. 修改 Tomcat 的 server.X

VSCode配置Anaconda Python环境的实现

《VSCode配置AnacondaPython环境的实现》VisualStudioCode中可以使用Anaconda环境进行Python开发,本文主要介绍了VSCode配置AnacondaPytho... 目录前言一、安装 Visual Studio Code 和 Anaconda二、创建或激活 conda

pytorch+torchvision+python版本对应及环境安装

《pytorch+torchvision+python版本对应及环境安装》本文主要介绍了pytorch+torchvision+python版本对应及环境安装,安装过程中需要注意Numpy版本的降级,... 目录一、版本对应二、安装命令(pip)1. 版本2. 安装全过程3. 命令相关解释参考文章一、版本对