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

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

3天内不再提示

STM32F103移植到AT32F403A之MDK(三)

创易栈 来源:创易栈 2023-02-06 10:19 次阅读

STM32F103移植到AT32F403A详细教程

在篇2当中,我们已经实现了使用内部晶振使主频达到72M,使各总线时钟也达到了和使用外部晶振一样的频率。

但部分模块在使用STM32标准库时还是会有些问题,本篇就针对常用的外设遇到的问题予以说明并解决。

首先,串口是我们最常用的外设,在使用内部晶振使各总线与使用外部晶振达到一样的频率时,使用串口时会存在数据收发乱码的问题。

我们来分析一下问题点,因为串口在使用外部晶振时,都是正常的,说明串口配置是没错的。再改为使用内部时钟后就出现串口异常问题,那问题一定来自时钟这块的问题,我们通过代码仿真看一下。在串口初始化过程中有和时钟相关的操作,在void USART_Init(USART_TypeDef* USARTx, USART_InitTypeDef* USART_InitStruct)函数中。

ec37d23e-a563-11ed-bfe3-dac502259ad0.pngec558964-a563-11ed-bfe3-dac502259ad0.pngec8a200c-a563-11ed-bfe3-dac502259ad0.png

通过仿真看一下RCC_ClocksStatus中各总线的时钟值,发现总线时钟都不对

eca8a130-a563-11ed-bfe3-dac502259ad0.png

经过对RCC_GetClocksFreq(&RCC_ClocksStatus)函数的分析发现,获取的倍频系数竟然是3,这是怎么回事?

ecc41d66-a563-11ed-bfe3-dac502259ad0.png

通过看AT32F403A的用户手册发现,PLL倍频系数是两部分组成的,我们在总线时钟初始化时使用的是倍频18倍,正好两部分都用到的,而ST的库在取值时只取了其中的一部分,导致倍频系数在计算时出现了错误。

ecdd8030-a563-11ed-bfe3-dac502259ad0.pngecfde730-a563-11ed-bfe3-dac502259ad0.png

好了,现在问题的原因找到了,我们该怎么解决呢?

有两种方式解决,第一种是改宏定义,使CFGR_PLLMull_Mask能够完整的取到正确的倍频系数(本人没有采用这种方式,因为倍频系数不连续,处理起来比较麻烦,而且容易出现其他调用问题)。

ed54a75a-a563-11ed-bfe3-dac502259ad0.pnged83783c-a563-11ed-bfe3-dac502259ad0.png

第二种是,不改宏,而是改串口初始化函数,因为获取各总线频率后用来计算波特率,我们人为将用到的总线频率改成正确的值就行了,我是这么改的。

edc6b7aa-a563-11ed-bfe3-dac502259ad0.png

通过修改此处,串口通信恢复正常。串口问题就此解决。

注意:其他外设如果也有通过获取总线时钟用于计算的,都要注意这个问题!!!

接着我们要处理个很容易忽略的问题,那就是FLASH问题,这里要说的不是厂家手册里说过的零等待啊,FLASH延时等问题。而是页大小问题,这个问题不是在所以的AT32F403A替换STM32F103系列都会遇到的问题。

我们先来看看STM32F103系列FLASH页大小的定义。

edfa79b4-a563-11ed-bfe3-dac502259ad0.png    

我们再来看看AT32F403A系列FLASH页大小的定义。

ee305e58-a563-11ed-bfe3-dac502259ad0.png

在使用AT32F403A替换STM32F103系列小容量和中容量时,由于页大小定义不同,在进行FLASH操作时要注意页大小问题,此问题多会出现在IAP,或将FLASH用于存储数据时会出现问题,而STM32F103大容量和互联型者不会有问题。

至此,我在使用AT32F403A替换STM32F103过程中遇到的问题就都介绍完了,如果在后续使用过程中再发现其他问题,请点击下方图片打开问个芯小程序进行咨询哦

本文来自创易栈平台用户@峰@投稿

审核编辑:汤梓红

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

    关注

    2239

    文章

    10662

    浏览量

    348445
  • 移植
    +关注

    关注

    1

    文章

    367

    浏览量

    27849
  • STM32F103
    +关注

    关注

    33

    文章

    474

    浏览量

    62528
  • MDK
    MDK
    +关注

    关注

    4

    文章

    208

    浏览量

    31762
  • USART
    +关注

    关注

    1

    文章

    186

    浏览量

    30367

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

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

收藏 人收藏

    评论

    相关推荐

    请问怎么把STM32F103的程序移植STM32F050?

    ,是不是拿J-link烧写的?有教程吗PS我怎么把STM32F103的程序移植STM32F050??是不是要用keil拉?移植程序是不是要
    发表于 09-10 09:34

    AT32F403A如何使用DMA弹性映射?

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

    将FreeRTOS移植STM32F103中的步骤

    目录一、FreeRTOS的介绍二、将FreeRTOS移植STM32F103中的步骤1.前期准备2.在MDK移植FreeRTOS
    发表于 08-24 07:26

    STM32F103STM32F407的程序是如何进行移植

    STM32F103STM32F407的程序是如何进行移植的?其步骤有哪些?
    发表于 10-20 06:16

    STM32F103STM32F407的程序是如何进行移植

    STM32F103STM32F407的程序是如何进行移植的?有哪些步骤?
    发表于 10-20 06:36

    请问TencentOS tiny如何移植STM32F103

    请问TencentOS tiny如何移植STM32F103
    发表于 11-29 07:32

    AT32F403A的相关资料下载

    最近MCU受限之后,逐步采用国产的MCU来替换,其中AT32F403A是评估考虑的替换MCU。其官网:https://www.arterytek.com/cn/index.jsp资料下载:https
    发表于 12-10 08:23

    怎样将STM32F103的代码全部移植STM32F042上呢

    STM32F042是什么?怎样将STM32F103的代码全部移植STM32F042上呢?有哪些注意点呢?
    发表于 12-14 07:07

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

    AT32F403A这款芯片据说和STM32是一毛一样的,最近在将项目代码直接移植这款芯片是出现了两个问题,一个是字库芯片不能使用,另一个是PA0唤醒按键无法正常唤醒,这里记录下一自己
    发表于 01-21 12:43

    stm32F103如何移植F407呢

    stm32F103如何移植F407呢野火虎霸天的板子总是不行
    发表于 06-02 22:39

    AT32F403A/407 GPIO应用说明

    AT32F403A/407 GPIO Application NoteAT32F403A/407xx的通用功能I/O (GPIO)提供了一系列与外部环境通讯的接口,可用于MCU与其他嵌入式设备之间
    发表于 10-25 08:06

    stm32f103移植

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

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

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

    STM32F103移植AT32F403AMDK(一)

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

    STM32F103移植AT32F403AMDK(二)

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