STM32F103移植到AT32F403A之MDK(一)

发布时间:2024-04-18  

移植背景是由于我之前项目上使用的是STM32F103C8T6,但有新需求需要增加新功能,而STM32F103C8T6的RAM在之前使用中被用的所剩无几,无法满足新需求,需要找新的芯片进行替代,正好其他项目上有用AT32F403ACGT7,正好PIN对PIN是兼容的,尽管flash和RAM都大很多,但此项目用的不多也就没必要再买其他型号的了,芯片确定了,剩下就是代码移植工作了。


理论上移植过程适用于全部AT32F403A系列型号

移植准备工作:

1. 一份STM32F103C8T6工程源码(标准库)

2.在雅特力官网的AT32F403A系列目录下下载Datasheet;Reference Manual;BSP;Pack;Tool;Application Note (应用手册)等文件

51643476-934f-11ed-bfe3-dac502259ad0.png


517b7c80-934f-11ed-bfe3-dac502259ad0.png


51bee236-934f-11ed-bfe3-dac502259ad0.png

厂家为帮助用户能够很好的由STM32移植到AT32,提供了Application Note (应用手册),在移植前还-要将厂商提供的文档《AT32F403A_入门指南》和MG0007这两个文件好好看看,里面介绍的比较全面,本篇文章的重点是介绍每一步移植过程的细节和遇到的问题,在《AT32F403A_入门指南》里介绍了BSP 与 PACK 的选择,但本文实际对应关系不在官方文档的描述内。

51efe3ae-934f-11ed-bfe3-dac502259ad0.png

具体移植工程如下:

1. 安装AT32 Pack,本文是MDK篇,所以安装MDK的Pack

5222a9b0-934f-11ed-bfe3-dac502259ad0.png

2. 打开STM32的MDK工程,编译原工程,确认原工程没问题

523de1bc-934f-11ed-bfe3-dac502259ad0.png

3. 更改芯片型号为AT32F403ACGT7,并暂时将FPU功能关闭,按实际芯片的flash和RAM修改相关参数(部分工程的相关参数需要在分散加载文件内修改)

525492e0-934f-11ed-bfe3-dac502259ad0.png


527d8fc4-934f-11ed-bfe3-dac502259ad0.png

4. 再次编译文件,并接上仿真器,配置好仿真器设置(我使用的是ST-LINK,可根据自己情况修改不同的仿真器),进入仿真模式,如果进入正常,说明我们芯片切换的第一部分完成了。

52b39092-934f-11ed-bfe3-dac502259ad0.png


52ca4ae4-934f-11ed-bfe3-dac502259ad0.png


52e02512-934f-11ed-bfe3-dac502259ad0.png


530123f2-934f-11ed-bfe3-dac502259ad0.png


530123f2-934f-11ed-bfe3-dac502259ad0.png


5332c2f4-934f-11ed-bfe3-dac502259ad0.png

5.接线来我们为了体现出AT32系列M4内核的优势,我们要将FPU功能打开,详细过程如下:

将AT32BSP中对应芯片型号的内核支持文件拷贝到要原来STM32工程的内核文件路径下

53a35c44-934f-11ed-bfe3-dac502259ad0.png


53cc4654-934f-11ed-bfe3-dac502259ad0.png


53e523b8-934f-11ed-bfe3-dac502259ad0.png


540236ec-934f-11ed-bfe3-dac502259ad0.png

将STM32工程内,core_cm3.c去掉

5505e55c-934f-11ed-bfe3-dac502259ad0.png

将stm32f10x.h内的#include "core_cm3.h"

改为 #include "core_cm4.h",

并添加宏定义 #define __FPU_PRESENT 1U

552733a6-934f-11ed-bfe3-dac502259ad0.png


5553fb02-934f-11ed-bfe3-dac502259ad0.png


556f72f6-934f-11ed-bfe3-dac502259ad0.png

在system_stm32f10x.c的void SystemInit (void)函数内添加

#if defined (__FPU_USED) && (__FPU_USED == 1U)

SCB->CPACR |= ((3U << 10U * 2U) |         

* set CP10 Full Access */

(3U << 11U * 2U)  );      

/* set CP11 Full Access */

#endif

556f72f6-934f-11ed-bfe3-dac502259ad0.png

在魔术棒设置内开启FPU

55d56106-934f-11ed-bfe3-dac502259ad0.png

这里有个需要注意的地方

上述操作完成后,实际上FPU已经开启,但在MDK编辑器内显示的相关宏定义依然是灰色的,这是编辑器的问题,可以进到仿真环境下,看先关代码是否被执行来确认FPU是否真的开启了。

55fbd0ca-934f-11ed-bfe3-dac502259ad0.png


5622b92e-934f-11ed-bfe3-dac502259ad0.png


564ed16c-934f-11ed-bfe3-dac502259ad0.png

由于AT32F403A是寄存器级兼容STM32F103系列的,至此,在使用外部晶振情况下,将STM32F103工程迁移到AT32F403A系列的初始过程就介绍完了,并将M4内核的FPU功能开启了,实现地性能的提高。后续我还会针对AT32的其他提升特性和注意事项进行介绍,希望本篇文章对有迁移到AT32F403A系列芯片的工程师有帮助。


文章来源于:电子工程世界    原文链接
本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>