stm32f4的程序移植到stm32f1_试管移植后hcg参考值

stm32f4的程序移植到stm32f1_试管移植后hcg参考值最近做了从STM32F103到STM32F407的程序移植工作。在做这项工作之前发现网上没有太全面的移植攻略,因而确实费了一番功夫和走了一些弯路。现在程序移植工作基本做完,趁着还能记起来遇到的问题,把程序移植需要注意的点整理在这里,希望对以后做这个工作的朋友能有些帮助。虽然我做的是F407的移植,但是大部分内容对于F40xx_41xx,乃至F4其他系列的芯片都适用。文章如要转载请私

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

最近做了从STM32F103到STM32F407的程序移植工作。在做这项工作之前发现网上没有太全面的移植攻略,因而确实费了一番功夫和走了一些弯路。现在程序移植工作基本做完,趁着还能记起来遇到的问题,把程序移植需要注意的点整理在这里,希望对以后做这个工作的朋友能有些帮助。

虽然我做的是F407的移植,但是大部分内容对于F40xx_41xx,乃至F4其他系列的芯片都适用。

文章如要转载请私信与我联系,并注明作者Mr.括号。

一、硬件兼容改造

先说一下硬件吧,两种芯片的大部分引脚是相同的,需要改动部分电源引脚。官方的芯片数据手册上给出了兼容版的设计图,以100引脚的为例:



stm32f4的程序移植到stm32f1_试管移植后hcg参考值

其中19引脚从VSS改成VDD,49和73引脚分别从接VSS改成接电容,电容值为2.2uF。

二、系统时钟设置

F407的外部高速时钟的宏定义在system_stm32f4xx.c中。

#define HSE_BYPASS_INPUT_FREQUENCY   8000000


其中8000000代表外部时钟选用8M晶振,此处需对应实际情况修改。

时钟设置在函数SetSysClock()中进行设置,关键语句为:

RCC->PLLCFGR = PLL_M | (PLL_N << 6) | (((PLL_P >> 1)-1) << 16) |(RCC_PLLCFGR_PLLSRC_HSE) | (PLL_Q << 24);


主时钟PLL的值等为:PLL=M*N/(M*P),对应需求进行修改。

三、外设时钟使能

F407的外设时钟使能的函数和F103的相同,但是外设对应的外设时钟的映射关系发生了改变。具体的映射关系在文件stm32f4xx.h中有宏定义。

例如:在F103中GPIOA的外设时钟使能语句为:

RCC_APB2PeriphClockCmd( RCC_APB2Periph_GPIOA, ENABLE );


在F407中,在stm32f4xx.h查找GPIOA,可以查到宏定义:

#define RCC_AHB1Periph_GPIOA ((uint32_t)0x00000001)


因而该使能语句可以改为:

RCC_AHB1PeriphClockCmd ( RCC_AHB1Periph_GPIOA, ENABLE );

四、GPIO端口初始化

在F103中,GPIO_InitTypeDef结构体为:

typedef struct
{ 
     
  uint16_t GPIO_Pin;        
  GPIOSpeed_TypeDef  GPIO_Speed; 
  GPIOMode_TypeDef   GPIO_Mode;  
}GPIO_InitTypeDef;

在F407中,该结构体为:

typedef struct
{ 
    
  uint32_t GPIO_Pin;          
  GPIOMode_TypeDef  GPIO_Mode;    
  GPIOSpeed_TypeDef GPIO_Speed;   
  GPIOOType_TypeDef GPIO_OType;  
  GPIOPuPd_TypeDef  GPIO_PuPd;    
}GPIO_InitTypeDef;

F103中的GPIO_Mode在F407中被拆解成了三个参数:GPIO_Mode、GPIO_OType和GPIO_PuPd。其中GPIO_Mode有输入、输出、复用和模拟四种模式可选,GPIO_OType选择推挽和开漏,GPIO_PuPd选择上拉、下拉和浮空。

五、DMA设置

F407中DMA的Channel统一换成了Stream与Channel组合的形式。DMA的初始化结构体DMA_InitTypeDef中多出了参数DMA_InitStructure.DDMA_Channel。不同外设请求对应的数据流和通道在官方参考手册中有明确的示例。DMA1和DMA2的请求映射如下:

stm32f4的程序移植到stm32f1_试管移植后hcg参考值
stm32f4的程序移植到stm32f1_试管移植后hcg参考值



另外还有一个小改动,在F103中DMA_Channel_TypeDef结构体中的元素为:

typedef struct
{ 
    
__IO uint32_t CCR;
__IO uint32_t CNDTR;
__IO uint32_t CPAR;
__IO uint32_t CMAR;
} DMA_Channel_TypeDef;

对应在F407中的DMA_Stream_TypeDef为:

typedef struct
{ 
    
__IO uint32_t CR;    
__IO uint32_t NDTR;  
__IO uint32_t PAR;  
__IO uint32_t M0AR; 
__IO uint32_t M1AR;  
__IO uint32_t FCR;  
} DMA_Stream_TypeDef;

在调用到该结构体中参数时需要注意。

六、重映射

在F407中不存在重映射(REMAP)的概念了,取而代之的是引脚的复用映射(AF)。而相比于F103的重映射,引脚复用功能更加灵活和全面。引脚复用时是对单独引脚进行配置。例如对USART2的PA2和PA3的复用设置指令为:

       GPIO_PinAFConfig(GPIOA,GPIO_PinSource2,GPIO_AF_USART2);
       GPIO_PinAFConfig(GPIOA,GPIO_PinSource3,GPIO_AF_USART2);


Mr.括号我直接把复用映射表列出来,方便大家查询:

stm32f4的程序移植到stm32f1_试管移植后hcg参考值
stm32f4的程序移植到stm32f1_试管移植后hcg参考值
stm32f4的程序移植到stm32f1_试管移植后hcg参考值

七、其他

用BSRRH代替了BRR

用BSRRL代替了BSRR

目前想到的就是上述这些,如果还有其他没提及的欢迎补充,如有纰漏敬请指正!

转载:https://zhuanlan.zhihu.com/p/24981431

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/181729.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • SQL%NOTFOUND_oracle导出sql文件

    SQL%NOTFOUND_oracle导出sql文件SQL%NOTFOUND是一个布尔值。与最近的sql语句(update,insert,delete,select)发生交互,当最近的一条sql语句没有涉及任何行的时候,则返回true。否则返回fal

    2022年8月4日
    2
  • MPEG-4、MPEG-4/AVC、H.264之间的联系与区别「建议收藏」

    MPEG-4、MPEG-4/AVC、H.264之间的联系与区别「建议收藏」当你在网上下载视频时,经常会看到MPEG-4、h.264等等词汇,它们之间有什么关系吗?  在视频编解码技术定义方面有两大标准机构。一个是国际电信联盟(ITU)致力于电信应用,已经开发了用于低比特率视频电话的H.26x标准,其中包括H.261、H.262、H.263与 H.264;另一个是国际标准化组织(ISO)主要针对消费类应用,已经针对运动图像压缩定义了MPEG

    2022年9月19日
    0
  • matlab读取txt文件中的数据_matlab读取文本文件

    matlab读取txt文件中的数据_matlab读取文本文件常用的主要有以下几种方法:1、load    Data=load("filename.txt");   该函数只能加载仅含有数字的文本文件,如果文档中夹杂着字母或者文字,就会报错。2、importdata    Data=importdata("filename.txt");    既可以读取数据又可以读取字符:Data.data矩阵里存放的是纯数字,Data.textdata矩阵…

    2022年9月6日
    4
  • mybatis多条件查询sql_sql模糊查询多个条件

    mybatis多条件查询sql_sql模糊查询多个条件步骤1:先运行,看到效果,再学习步骤2:模仿和排错步骤3:在前一步的基础上进行步骤4:模糊查询步骤5:多条件查询步骤1:先运行,看到效果,再学习老规矩,先下载下载区(点击进入)的可运行项目,配置运行起来,确认可用之后,再学习做了哪些步骤以达到这样的效果。步骤2:模仿和排错在确保可运行项目能够正确无误地运行之后,再严格照着教程的步骤,对代码模仿一遍。模仿过程难免代码有出入,导致无法得到…

    2022年9月4日
    2
  • matlab求解不定方程组_matlab解参数方程组

    matlab求解不定方程组_matlab解参数方程组最想说的一句话:要查matlab用法,一定要到官网去查,一些用法matlab官方是在不断更新的,现存的一些办法已经无法解决问题使用的是solve这个函数它拥有解决优化问题,解方程的功能,下面我将举一些常用的例子文章目录一、解单变量方程二、解多变量方程三、解带参数方程四、解不等式知识点总结一、解单变量方程题目:求解方程2x+1=0 2x+1=02x+1=0symsx…

    2022年9月14日
    0
  • PS初学者实例教程——图层样式的学习[斜面和浮雕]

    PS初学者实例教程——图层样式的学习[斜面和浮雕]本系列教程由中国教程网互助课堂专为PS新手制作,在这里有系列的教程、练习,并有老师对练习进行点评与指导,欢迎朋友们的光临!本例我们学习“斜面和浮雕”图层样式斜面和浮雕是使用频率最高的一种图层样式,熟悉和掌握操作技巧,我们就可以制作出精彩的效果;特别是等高线,运用得当可以制作出与众不同的特殊视觉效果图象题后留有练习作业题,请选择练习.如果使用了附加方法,请加以说明

    2022年9月4日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号