0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

STM32F103移植到AT32F403A之MDK(一)

创易栈 来源:创易栈 2023-01-14 11:25 次阅读

STM32F103移植到AT32F403A详细教程

在当下这个芯片紧张的时期,市面上用的最多的ST芯片缺货严重,价格涨的离谱,只能找替代芯片满足产品的生产需求,好在国内出现的一批替代ST芯片的厂商,比如我将要使用的AT32系列芯片的厂商雅特力,能够较好的兼容ST的芯片。

移植背景是由于我之前项目上使用的是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系列芯片的工程师有帮助。

审核编辑:汤梓红

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5336

    浏览量

    120260
  • STM32
    +关注

    关注

    2270

    文章

    10896

    浏览量

    355781
  • 移植
    +关注

    关注

    1

    文章

    379

    浏览量

    28127
  • STM32F103
    +关注

    关注

    33

    文章

    477

    浏览量

    63605
  • MDK
    MDK
    +关注

    关注

    4

    文章

    209

    浏览量

    32063

原文标题:STM32F103移植到AT32F403A之MDK(一)

文章出处:【微信号:创易栈,微信公众号:创易栈】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    AT32F403A如何使用DMA弹性映射?

    ,固定映射的存在,主要的目的是为了兼容STM32F103,弹性映射则提供了更为灵活的通道与数据流的选择下图是AT32F403A的DMA 1的请求表,这种方式和我们之前熟悉的STM32F103的DMA
    发表于 11-25 19:18

    为什么项目代码无法移植AT32F403A芯片上呢

    AT32F403A这款芯片据说和STM32样的,最近在将项目代码直接移植这款芯片是出现
    发表于 01-21 12:43

    盘古STM32F103开发板移植uCOS-II详细说明

    盘古STM32F103开发板移植uCOS-II详细说明
    发表于 03-02 17:29 13次下载

    如何使用MDK5.0建立STM32F103工程

    如何使用MDK5.0建立STM32F103工程
    发表于 07-20 08:55 0次下载

    盘古STM32F103开发板移植uCGUI教程

    盘古STM32F103开发板移植uCGUI教程
    发表于 09-29 09:21 21次下载
    盘古<b class='flag-5'>STM32F103</b>开发板<b class='flag-5'>移植</b>uCGUI教程

    STM32F103使用总结

    STM32F103使用总结
    发表于 10-24 10:22 152次下载

    stm32f103移植

    stm32f103移植
    发表于 10-27 09:03 43次下载
    <b class='flag-5'>stm32f103</b><b class='flag-5'>移植</b>

    TencentOS tiny 移植STM32F103全教程(基于标准库)

    TencentOS tiny 移植STM32F103全教程(基于标准库)
    发表于 11-23 18:06 16次下载
    TencentOS tiny <b class='flag-5'>移植</b><b class='flag-5'>到</b><b class='flag-5'>STM32F103</b>全教程(基于标准库)

    在GD32F103移植STM32F103代码

    在GD32F103移植STM32F103代码使用相同FLASH和管脚数量相同的芯片,例如GDF103C8T6移植
    发表于 12-02 15:21 23次下载
    在GD32<b class='flag-5'>F103</b><b class='flag-5'>移植</b><b class='flag-5'>STM32F103</b>代码

    GD32F103STM32F103的区别 2021.6.2

    GD32F103STM32F103区别介绍关键词Key words:GD32F103STM32F103摘要Abstract:本文主要是GD32F
    发表于 12-08 11:06 83次下载
    GD32<b class='flag-5'>F103</b>与<b class='flag-5'>STM32F103</b>的区别 2021.6.2

    华为LiteOS系统移植STM32F103开发板(基于MDK环境)

    华为LiteOS系统移植STM32F103开发板(基于MDK环境)
    发表于 12-08 14:21 48次下载
    华为LiteOS系统<b class='flag-5'>移植</b><b class='flag-5'>到</b><b class='flag-5'>STM32F103</b>开发板(基于<b class='flag-5'>MDK</b>环境)

    RT-Thread系统移植STM32f103

    RT-Thread系统移植STM32f103
    发表于 12-09 12:51 26次下载
    RT-Thread系统<b class='flag-5'>移植</b><b class='flag-5'>到</b><b class='flag-5'>STM32f103</b>

    STM32F103移植AT32F403AMDK(二)

    不是,由于技术和工艺问题,前些年的MCU还无法完全摆脱外部晶振,而近几年的MCU才算真正能够摆脱外部晶振,STM32F103系列和AT32F403A系列正好代表了这两个阶段的产品。
    的头像 发表于 01-29 15:09 1629次阅读

    用于stm32f103 A/D信号采集的处理

    用于stm32f103 A/D信号采集的处理
    发表于 08-01 18:13 5次下载

    AT32F403A系列 数据手册

    电子发烧友网站提供《AT32F403A系列 数据手册.pdf》资料免费下载
    发表于 01-22 10:06 7次下载