STM32F407VET6(标准库)移植FreeRTOS 超详细!!!

        前段时间写了一篇基于标准库的STM32F103移植FreeRTOS的教程,现在用到F4系列,将其工程模板创建过程做一个记录。

1.ST官网下载设备支持包与标准外设库

1.1下载设备支持包

至此,F407的设备支持包就下好了

1.2下载标准外设库

①进入ST官网,直接搜你想要的型号,这里我搜STMF407。

       ②这里选择你需要的芯片型号,我用的是VET6,选择STM32F407VE。

③选择MCU和MPU嵌入式软件,图中标红。

④这里,主要看中间这一栏,标红写的是STM32F4 DSP and standard peripherals library,大致意思就是F4系列的标准外设库(因为STM32F4系列微控制器采用了ARM Cortex-M4内核,而Cortex-M4内核本身就包含了DSP扩展指令集。)

至此,我们工程模版的准备工作就算做好了。

2.安装第一步中下载的设备支持包以及进行标准库移植

2.1安装设备支持包

2.1.1打开Keil5软件,选择Pack Installer

2.1.2选择File->Import,导入我们刚才1.1中下载的设备支持包

静待一会,导入完成即可。(每次仅需导入一次设备支持包即可,后续开发,创建新的工程时无需重复导入!)

2.2新建工程并移植标准外设库

2.2.1在上一步导入设备支持包后,Keil5软件不要关,点击Project->New μVersion->Project...

2.2.2创建一个文件夹,并在里面给你的工程去一个名字,一般这个名字越通用越好,因为后面不好更改,这里我就取Project,之后点击保存。

2.2.3随后选择我们的芯片型号,这里可以看到STM32F4系列,这里我们选择STM32F4 Series->STM32F407->STM32F407VETx(我用的是STM32F407VET6),随后点击OK

2.2.4这里弹出的页面,是帮你构建工程的,如标准库的下载等等,这里我们选择Cancel(取消)。因为我们用官网下载好的进行文件的移植

2.2.4这里将Keil5最小化,点开我们刚才新建工程时,创建的文件夹,可以发现多了一些东西,这是Keil5软件在新建一个工程后,自动帮我们生成的。下面我们创建3个文件夹,存放标准库文件,启动文件以及,用户文件,分别取名为:Start、Lirary、User

2.2.5现在开始移植,先移植启动文件,点开自己创建文件夹下的Start,点开我们1.2下载的标准外设库文件中的en.stsw-stm32065_v1-9-0->STM32F4xx_DSP_StdPeriph_Lib_V1.9.0->Libraries->CMSIS->Include,移植到Start

点开我们1.2下载的标准外设库文件中的en.stsw-stm32065_v1-9-0->STM32F4xx_DSP_StdPeriph_Lib_V1.9.0->Libraries->CMSIS->Device->ST->STM32F4xx->Include,移植到Start

这里补充一点,这里将stm32f4xx.h文件的只读属性去掉,方便我们后面选择外部高速时钟。

点开我们1.2下载的标准外设库文件中的en.stsw-stm32065_v1-9-0->STM32F4xx_DSP_StdPeriph_Lib_V1.9.0->Libraries->CMSIS->Device->ST->STM32F4xx->Source->Templates->arm,移植到Start

点开我们1.2下载的标准外设库文件中的en.stsw-stm32065_v1-9-0->STM32F4xx_DSP_StdPeriph_Lib_V1.9.0->Project->STM32F4xx_StdPeriph_Examples->ADC->ADC_DMA,移植到Start。至此Start文件夹移植完成。

2.2.6现在开始移植常用的标准库函数的.c/.h文件,点开我们1.2下载的标准外设库文件中的en.stsw-stm32065_v1-9-0->STM32F4xx_DSP_StdPeriph_Lib_V1.9.0->Libraries->STM32F4xx_StdPeriph_Driver->inc和src,移植到Library。至此Library一直完成。

2.2.7现在开始移植用户文件,现在我们自己的Uer文件下创建一个main.c文件。点开我们1.2下载的标准外设库文件中的en.stsw-stm32065_v1-9-0->STM32F4xx_DSP_StdPeriph_Lib_V1.9.0->Project->STM32F4xx_StdPeriph_Templates,移植到User。至此User一直完成。

2.2.8下面我们就可以点开刚才我们最小化的Keil5软件调试

首先点击3个小箱子按钮,把我们刚才复制的源文件,添加进组。

创建好之后,在左侧的工程树中,点击User->main.c,添加如下代码

#include "stm32f4xx.h"                  // Device header

int main(void)
{
	while(1)
	{
		
	}
}

双击左侧设计树中Start->stm32f4xx.h,进入该文件。将图中圈红部分改成8000000,代表外部8M晶振。

单击魔术棒按钮,将我们标准库文件、启动文件、用户文件的路径包含进来,并定义使用标准外设驱动以及芯片选型,否则Keil5是找不到这些文件的。

圈红部分就是我们需要添加的部分,①是定义使用标准外设驱动以及芯片选型,②是将我们标准库文件、启动文件、用户文件的路径包含进来

此时编译发现错误

报错的意思是这玩意重定义了,点进去发现这几个这几个APB2总线的寄存器重复宏定义,我们把下面的给注释掉:

再次编译,出现31个错误,主要分为两类:

这个意思是,找不到main.h这个文件,我们在正常编写程序的时候是用不到这个文件的。

这个报错的意思是这些跟FMC_xx都是未定义的,其实是我们这个芯片没这个FMC,我们用的是FMSC。所以接下来解决上面两类报错:

①点击第一个main.h的报错,将圈红代码注释或删除

②在左侧设计树,删除Library下的stm32f4xx_fmc.c与stm32f4xx_fmc.h两文件,别忘了在Library文件夹下也要删除

再次编译:

发现还有一个错误一个警告,点进去将其注释

再编译:

0错误 0警告。现在就可以进行裸机开发了。

3.下面是进行FreeRTOS移植

大部分的步骤可以参考我上一篇基于f1系列移植的过程,这里放一个链接:将FreeRTOS移植到STM32F103RCT6(江协模版,标准库)_stm32f103rct6移植freertos-CSDN博客

下面我只说一下还动部分:在移植FreeRTOSConfig.h时需选择该路径下的配置文件:FreeRTOSv9.0.0->FreeRTOSv9.0.0->FreeRTOS->Demo->CORTEX_M4F_STM32F407ZG-SK->FreeRTOSConfig.h

其次,在做完上述步骤后,更改FreeRTOSConfig.h文件比f1系列要简单一点只需下面几部:

将FreeRTOSConfig.h文件下标红的地方改成跟上图一样即可。

最后,在stm32f4xx_it.c中将如下代码注释

最后,编译通过,0错误 0警告!

到这里,我们标准库以及操作系统移植就算成功了。

结束

创作不易,还请大家点赞+收藏+关注!!谢谢大家,如有问题烦请指出,欢迎交流,学习,讨论!

补充:

发现上篇博客中操作系统的源码链接点不卡,这里再补一下!

通过网盘分享的文件:FreeRTOSv9.0.0.zip
链接: https://pan.baidu.com/s/1CNy0DluA_k6Jdv-33tjDFA?pwd=2beg 提取码: 2beg 
--来自百度网盘超级会员v5的分享

评论 10
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值