当前位置:网站首页>基于keil5自动配置stm32f103标准库的官网freertos移植
基于keil5自动配置stm32f103标准库的官网freertos移植
2022-06-29 08:42:00 【夏虫不可与之言冰】
基于keil5自动配置stm32f103标准库的官网freertos移植
前言
当笔者学习stm32f103的时候,我是看市面上的野火,正点原子,洋桃电子等视频学习的,除了黑石(我后期才接触到的)其余无一例外的采用手动配置的工程操作流程很复杂容易出错,当笔者进入笔者大学实验室正式学习的时候,笔者指导老师交给我的利用keil5的芯片包自动配置的功能.极大的简化了工程创建的步骤和难度,在进入主题之前,笔者想就自动创建工程再叙述一遍读者,有嫌啰嗦的可以跳到正式篇
序言:利用keil5自动配置stm32f103标准库工程
在一切的开始我们需要一个keil5(官网可以找到),除此之外,我们还需要一个芯片包(下载时候看好了stm32f1的芯片包),具体的安装流程不多赘述,差不多就是下一步下一步,注意先安装keil5,再安装芯片包,keil5可以修改安装位置芯片包则不行
安装好后,在桌面创建一个文件夹用来存放工程,打开keil5,点击project选中New μVision project
进入之前的创建的文件夹后,添加自己工程名,点击保存(s)按钮然后如下图
因为之前安装了一个.pack的芯片包,所以出现了这个STMicroelectronics,点开后找到STM32F1 Series 然后再点击STM32F103,因为笔者常用c8t6所以就选择了c8t6,f1系列的其它芯片都大同小异,选好芯片的类型后点击OK便可以进入下图
先勾选Device下的Startup 然后将Std Periph Drivers下的全部勾选,发现右下角有很多感叹号,没关系点击Resolve就没了,已经勾选的勾选框也从黄色变成绿色,点击OK则创建工程完成,接下来我们创建主函数来确定没有错误和警告
点击小+号按钮把工程展开就能看到最底层有两个绿色的菱形和一个黄色文件夹,绿色菱形是标准库,打开发现很多东西是有个小锁的只读文件,我们右击文件夹点击Add New Item to Group
选择C语言文件,写入名称(名字可以不是main笔者习惯罢了),然后点击Add
然后对新建立的main.c中写入
int main()
{
}
就可以点击build等待一分钟如果如下图
就没问题了,如果有一个警告,八成是最后一行没有换行,这是c99的规则最后一行必须换行而且没有任何空格
闲话
至此一个自动建立stm32f103工程就建立完了.首先这个建立方式要比手动建立容易好多,其次所学的程序和工程建立基本没关系,于是用这个方法学习了很久那么,但是到了学习系统的时候了.freertos正点原子给的资料任然是他们基于之前手动建立工程的版本去移植的f103,这就让笔者很头疼了,经过很多的失败与查阅资料,笔者找到了基于自动建立工程的移植办法,在这里提供给大家希望大家少走一点弯路.
正式篇
移植官网FreeRTOS
移植freertos我们需要,已经基于自动建立工程创建好的一个简单的工程.一个最新版的freertos的文件(点击右上角就可以下载,英语不好的建议用Chrome翻译一下网页)
我们下载解压好的FreeRTOSv10.2.1(我现在的最新版是10.2.1)文件夹下面找到FreeRTOS文件夹,打开后找到Source,复制这个文件夹到自己的工程文件夹下

再删除Source->protable里面除了Keil MemMang和RVDS之外的所有文件和文件夹
打开工程点击魔术棒,然后点击C/C++选项卡点击Include Paths右边的…
点击新建选项框后点击…包含Source下面的include 点击一下空白处后再相同操作包含一下Source->RDVS->ARM_M3这个文件夹点击OKOK
右击Target1点击Manager Project Item
在Group中添freertos_code和freertos_protable两个分组,freertos_code中点击Add Files…添加Source下面的所有c文件,freertos_protable中点击Add Files…添加Source->protable->MenMang里的heap_4.c添加Source->protable->ARM_CM3里面的port.c
在运行一下我们似乎缺少什么,在我们下载的官方文件夹里找到它,FreeRTOSv10.2.1\FreeRTOS\Demo\CORTEX_STM32F103_Keil里找到FreeRTOSConfig.h文件,将它复制到你工程文件夹的Source->include里在次点击
build
还是有个错误,
我们在main.c里加入#include “FreeRTOS.h"然后右键再点击open document <FreeRTOS.h”>
按住Ctrl+F然后在Find输入框里输入xTaskGetCurrentTaskHandle点击Find Next
把这里搜索到的宏定义改为1,再build
没错了,下次再把正点原子SYSTEM文件移植成FreeRTOS适用的.
边栏推荐
猜你喜欢

Wechat applet wx Navigateback returns the parameters carried on the previous page

Share code snippets of wechat applet

GD32F4xx 以太網芯片(enc28j60)驅動移植

# 《网络是怎么样连接的》读书笔记 - WEB服务端请求和响应(四)

MATLAB小技巧(21)矩阵分析--偏最小二乘回归

Wechat applet user refuses to authorize geographic location information and calls up the authorization window again

MySQL uses union all to count the total number of combinations of multiple tables and the number of tables respectively

UE4 remove the mask transparent white edge in the material

Simple use of promise method

LSM6DSL之SPI驱动
随机推荐
MySQL uses union all to count the total number of combinations of multiple tables and the number of tables respectively
pytoch总结—TENSOR 和NUMPY相互转换
Which securities company is good for opening a mobile account? Is it safe to open an account online?
Wechat applet jump to official account image and text content
Pytorch Summary - sensor on GPU
UE4 blueprint modify get a copy in array to reference
UE4 在4.20-23版本安装Datasmith插件
Professional structure record
Self cultivation (XXI) servlet life cycle, service method source code analysis, thread safety issues
【NOI模拟赛】为NOI加点料(重链剖分,线段树)
Wechat applet project: tab navigation bar
Pytorch summary learning series - data manipulation
(transfer) mysql: error 1071 (42000): specified key was too long; max key length is 767 bytes
UE4 display 3D editable points in Viewport
Hb5470 combustion test of non-metallic materials in civil aircraft cabin
UE4 去掉材质中Mask透明白边
[target detection] | indicator a probabilistic challenge for object detection
Redo after JS rotation view (longer full version, can be run)
easyexecl导出100万行execl报字体错误的解决办法
ThinkPHP 6 uses mongodb