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

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

3天内不再提示

F103程序移植到F407的经验小结

撞上电子 2023-05-18 10:22 次阅读

1.部分外设及GPIO口对应的时钟改变

因此各GPIO的时钟使能函数和时钟名称均发生改变。

0f789ad0-f50f-11ed-ba01-dac502259ad0.png

0f95e630-f50f-11ed-ba01-dac502259ad0.png

2.GPIO口的模式发生改变

F1的GPIO口只有8种模式;而F4在输出时亦可设置上拉和下拉,因此F4可以有12种模式。并且F4的GPIO口的输入/输出/复用/模拟、推挽/开漏、上拉/下拉 都需要单独设置。除此之外,因为F4用的是AHB时钟,其最大输出速率可达到100MHz以上。

0fbd547c-f50f-11ed-ba01-dac502259ad0.png

0fdeacd0-f50f-11ed-ba01-dac502259ad0.png

100702b6-f50f-11ed-ba01-dac502259ad0.png

10269572-f50f-11ed-ba01-dac502259ad0.png

3.GPIO口对应的寄存器的名称发生改变

直接编译的话就会出现这样的错误errorstruct""has no field "CRL",CRL是F1的端口配置低位寄存器,而因为F4中对应的寄存器已经不叫这个名字了(叫MODER),因此会报错。

//举个栗子//F1#define AMG_SDA_IN() {GPIOB->CRL&=0x0FFFFFFF;GPIOB->CRL|=(u32)8<<28;}//PB7输入模式#define AMG_SDA_OUT() {GPIOB->CRL&=0x0FFFFFFF;GPIOB->CRL|=(u32)3<<28;}//PB7输入模式//F4#define AMG_SDA_IN() {GPIOB->MODER&=~(3<<(7*2));GPIOB->MODER|=0<<7*2;} //PB7输入模式#define AMG_SDA_OUT() {GPIOB->MODER&=~(3<<(7*2));GPIOB->MODER|=1<<7*2;}//PB7输入模式

4.F4配置有浮点数得硬件运算单元

F1是没有浮点数得硬件运算单元的,其浮点数运算是采用软件模拟,因此运算速度会很慢。(1)警告:warning:#1035-D:single-precision operand implicitly converted to double-precision解决方法:1)如果是浮点数值进行运算的话,则在浮点数值后加上f;2)若是变量运算,则将其计算强制转换

floata,b,c;c=0.1f*8.9f;//浮点数值后加fa=(float)(a*b);//将其运算结果转换

(2)如何开启F4的浮点数硬件计算单元

1)打开文件system_stm32f4xx.c——>函数void SystemInit(void)中加入如下代码:

#if(__FPU_PRESENT==1)&&(__FPU_USED==1) SCB->CPACR|=((3UL<< 10*2)|(3UL << 11*2));    #endif

2)在编译器中,Options for Target’XXX’—>C/C+±—>Define中加入以下语句:

__FPU_PRESENT=1,__FPU_USED =1

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

    关注

    10

    文章

    1499

    浏览量

    130573
  • GPIO
    +关注

    关注

    16

    文章

    1151

    浏览量

    50926
收藏 人收藏

    评论

    相关推荐

    如何实现以太网功能的,是用F107或F407芯片自己移植Lwip还是采用SPI转以太网模块?

    一般大家是如何实现以太网功能的,是用F107或F407芯片自己移植Lwip还是采用SPI转以太网模块?
    发表于 05-17 06:49

    STM32F407移植LWIP协议栈总是进入硬件中断的原因?

    f407移植LWIP协议栈 一这个地方就进入硬件中断 请问是我的指针没初始化好吗?还是其他原因?? /* entry point to the LwIP stack */ err = netif->input(p,
    发表于 05-16 07:59

    stm32f401与stm32f407在工程配置与代码上有什么区别?

    方便容易,但很奇怪现在调试一直不通,使用最基本的高低电平以及串口测试程序都不通,不通指的是:能够通过flash loader v2.8正常下载代码进去,但是不能跑。想问在工程配置以及代码上f407
    发表于 05-09 06:01

    把STM32F407程序移植STM32F103的芯片上面,需要修改哪些内容?

    把STM32F407程序移植STM32F103的芯片上面,需要修改哪些内容?
    发表于 04-10 07:38

    keil编译STM32H745I-DISCO项目很慢是什么原因造成的?

    最近用keil试着编译H745 discovery 包里面的项目,发现M7/M4项目都超级慢,一个文件基本上半分钟编译完。keil版本是最新的5.31, 以前单独编译F103,F407都很块的。 各位有没遇到这个问题,请问有没解决办法?谢谢。
    发表于 04-10 06:25

    如何把stm32F103程序移植stm32g030k6t6上?

    怎么把stm32F103程序移植stm32g030k6t6上
    发表于 04-03 07:57

    STM32F407配置DMA TIM PWM一直无法生效的原因?

    使用HAL库配置 TIM 输出DMA PWM ,几乎差不多的 代码,F103可以启动,但F407无法启动。可否有例程可以参考,感觉资料太少了。 if (HAL_TIM_PWM_Init
    发表于 03-21 06:07

    STM32F103VE搭建的PWM输入捕获功能,移植STM32F103VD无法捕获的原因?

    利用STM32F103VE芯片搭建的PWM输入捕获功能,移植STM32F103VD的时候,无法捕获。主要存在的问题:进入不了中断服务函数(利用STM32
    发表于 03-20 08:21

    STM32F407USB HAL库的USB In时的数据流向是什么?

    最近在学习STM32 F407的USB功能。想要做一个USB声卡,可以播放,可以录音。 但是在Host录音的时候,F407不会发送数据Host。 请问有大佬可以介绍一下F407 US
    发表于 03-19 06:58

    用Cubemx生成的F103ZET6 USB Audio Device Class的代码,能正常被枚举但没有声音怎么解决?

    Class的代码,就可以 用bus hund 抓了cubemx F103ZET6 USB Auduo代码 发现只有一个控制端点 对比CubemX 生成的F407 USB Audio代码 还有一个同步端点, F407 生成的代码
    发表于 03-18 06:21

    AT32F403/F403A/F407/F413 RTC日历的使用

    AT32F403/F403A/F407/F413 RTC 日历的使用演示AT32F403/F40
    发表于 10-26 07:32

    F407的FATFS工程占用的内存太大了怎么减小呢?

    F407的FATFS工程占用的内存太大了,怎么减小呢?
    发表于 10-23 06:13

    STM32F407做一个USB声卡,在Host录音的时F407不会发送数据Host是为什么

    最近在学习STM32F407的USB功能。想要做一个USB声卡,可以播放,可以录音。 但是在Host录音的时候,F407不会发送数据Host。 请问有大佬可以介绍一下F407 USB
    发表于 08-08 06:57

    用Cubemx生成的F103ZET6 USB Audio Device Class代码能正常被枚举但没有声音怎么解决

    Class的代码,就可以 用bus hund 抓了cubemx F103ZET6 USB Auduo代码 发现只有一个控制端点 对比CubemX 生成的F407 USB Audio代码 还有一个同步端点, F407 生成的代码
    发表于 08-07 08:34

    请问STM32WB55RG中F103芯片中的出厂程序在哪里可以获取?

    STM32WB55RG中F103芯片中的出厂程序在哪里可以获取?
    发表于 08-04 11:37