u F1采用Crotex M3内核,F4采用Crotex M4内核。u F1最高主频 72MHz, F4最高主频168MHz。u F4具有单精度浮点运算单元,F1没有浮点运算单元。u F4的具备增强的DSP指令集。F4的执行16位DSP指令的时间只有F1的30%~70%。F4执行32位DSP指令 的时间只有F1的25%~60%。u F1内部SRAM最大64K字节, F4内部SRAM有192K字节(112K+64K+16K)。u F4有备份域SRAM(通过Vbat供电保持数据),F1没有备份域SRAM。u F4从内部SRAM和外部FSMC存储器执行程序的速度比F1快很多。F1的指令总线I-Bus只接到Flash上,从SRAM和FSMC取指令只能通过S-Bus,速度较慢。F4的I-Bus不但连接到Flash上,而且还连接到SRAM和FSMC上,从而加快从SRAM或FSMC取指令的速度。u F1最大封装为144脚,可提供112个GPIO;F4最大封装有176脚,可提供140个GPIO。u F1的GPIO的内部上下拉电阻配置仅仅针对输入模式有用,输出时无效。而F4的GPIO在设置为输出模式时,上下拉电阻的配置依然有效。即F4可以配置为开漏输出,内部上拉电阻使能,而F1不行。u F4的GPIO最高翻转速度为84MHz,F1最大翻转速度只有18MHz。u F1最多可提供5个UART串口,F4最多可以提供6个UART串口。u F1可提供2个I2C接口,F4可以提供3个I2C接口。u F1和F4都具有3个12位的独立ADC,F1可提供21个输入通道,F4可以提供24个输入通道。F1的ADC最大采样频率为1Msps,2路交替采样可到2Msps(F1不支持3路交替采样)。F4的ADC最大采样频率为24Msps,3路交替采样可到72Msps。u F1只有12个DMA通道,F4有16个DMA通道。F4的每个DMA通道有432位FIFO,F1没有FIFO。u F1的SPI时钟最高速度为 18MHz, F4可以到375MHz。u F1没有独立的32位定时器(32位需要级联实现),F4的TIM2和TIM5具有32位上下计数功能。u F1和F4都有2个I2S接口,但是F1的I2S只支持半双工(同一时刻要么放音,要么录音),而F4的I2S支持全双工,放音和录音可以同时进行
stm32上烧录程序要按boot+reset是因BOOT启动出问题了。根据查询相关公开信息显示,stm32f4启动方式分三种:UserFLash、SystemFlash和EmbeddedSRAM,通过BOOT0和BOOT1管脚配置,若BOOT启动出问题了,需要按boot+reset重新启动。
如何使用STM32F4的DSP库
我们平常所使用的CPU为定点CPU,意思是进行整点数值运算的CPU。当遇到形如11+11的浮点数运算时,定点CPU就遇到大难题了。对于32位单片机,利用Q化处理能发挥他本身的性能,但是精度和速度仍然不会提高很多。
现在设计出了一个新的CPU,叫做FPU,这个芯片专门处理浮点数的运算,这样处理器就将整点数和浮点数分开来处理,整点数交由定点CPU处理而浮点数交由FPU处理。我们见到过TI的DSP,还有STM32F4系列的带有DSP功能的微控制器。前者笔者没有用过,不作评论,而后者如果需要用到FPU的浮点运算功能,必须要进行一些必要的设置。
首先,由于浮点运算在FPU中进行,所以首先应该使能FPU运行。在system_init()中,定义__FPU_PRESENT和__FPU_USED
/ FPU settings------------------------------------------------------------/
#if (__FPU_PRESENT == 1)&& (__FPU_USED == 1)
SCB->CPACR |= ((3UL<< 102)|(3UL << 112)); /set CP10 and CP11 Full Access /
#endif
这样就使能了FPU。
对于上述改变,当程序中出现这种简单的加减乘除运算FPU就起作用了。但是对于复杂的如三角运算、开方运算等,我们就需要加入mathh头文件。但是如果单纯的加入他,那么Keil会自动调用内部的mathh,该头文件是针对ARM处理器的,专门用于定点CPU和标准算法(IEEE-754)。对于使用了FPU的STM32F4是没有任何作用的。所以,需要将mathh换成ST的库,即arm_mathh。在该头文件中,涉及到另一个文件core_cmxh(x=0、3、4),当然了,如同STM32F1系列一样,在工程中加入core_cm4h即可。
到这里,算是全部设置完毕,之差最后一步,调用!但是别小看了这一步,因为如果调用的不正确,全面的设置就白费了。在使用三角函数如sin()、cos()时不要直接写如上形式,因为他们函数的名字来自于mathh,所以你调用的仍旧是Keil库中的标准mathh。要使用arm_mathh中的arm_sin_f32()函数(见Line5780,原函数见DSP_Lib\Source\FastMathFunctions),可以看到他利用的是三次样条插值法快速求值(见Line263 / Cubic interpolation process /)。
注意一下例外函数,sqrt(),在arm_mathh中为arm_sqrt_f32()。使用他的时候需要同时开启#if(__FPU_USED == 1) && defined ( __CC_ARM )才行,切记!还可以发现开方函数还有q15和q31之分,我想他们的区别就是精度的问题,但是他们没有应用FPU来计算,说白了就是利用0x5f3759df这个数进行快速开方
STM32F4是由ST(意法半导体)开发的一种高性能微控制器系列。其采用了90nm的NVM工艺和ART技术(自适应实时存储加速,Adaptive Real-Time MemoryAccelerator)。
ST(意法半导体)推出了以基于ARM® Cortex™-M4为内核的STM32F4系列高性能微控制器,其采用了90 纳米的NVM 工艺和ART(自适应实时存储器加速,Adaptive Real-Time MemoryAccelerator™)。
STM32F4供应商:拍明芯城元器件商城
ART技术使得程序零等待执行,提升了程序执行的效率,将Cortext-M4的性能发挥到了极致,
使得STM32 F4系列可达到210DMIPS@168MHz。
自适应实时加速能够完全释放Cortex-M4 内核的性能;当CPU 工作于所有允许的频率(≤168MHz)时,在闪存中运行的程序,可以达到相当于零等待周期的性能。
STM32F4系列微控制器集成了单周期DSP指令和FPU(floating point unit,浮点单元),提升
了计算能力,可以进行一些复杂的计算和控制。
STM32 F4系列引脚和软件兼容于当前的STM32 F2系列产品。
优点
※兼容于STM32F2系列产品,便于ST的用户扩展或升级产品,而保持硬件的兼容能力。
※集成了新的DSP和FPU指令,168MHz的高速性能使得数字信号控制器应用和快速的产品开发达到了新的水平。提升控制算法的执行速度和代码效率。
※先进技术和工艺
- 存储器加速:自适应实时加速(ART Accelerator™ )
- 多重AHB总线矩阵和多通道DMA:支持程序执行和数据传输并行处理,数据传输速率非常快
- 90nm工艺
※高性能
- 210DMIPS@168MHz
- 由于采用了ST的ART加速,程序从FLASH运行相当于0等待更多的存储器
- 多达1MB FLASH (将来ST计划推出2MB FLASH的STM32F4)
- 192KB SRAM:128KB 在总线矩阵上,64KB在专为CPU使用的数据总线上高级外设与STM32F2兼容
- USB OTG高速 480Mbit/s
- IEEE1588, 以太网 MAC 10/100
- PWM高速定时器:168MHz最大频率
- 加密/哈希硬件处理器:32位随机数发生器(RNG)
- 带有日历功能的32位RTC:<1 μA的实时时钟,1秒精度
※更多的提升
- 低电压:18V到36V VDD,在某些封装上,可降低至17V
- 全双工I2S
- 12位 ADC:041us转换/24Msps(72Msps在交替模式)
- 高速USART,可达105Mbits/s
- 高速SPI,可达375Mbits/s
- Camera接口,可达54M字节/s
可以运行。
板子所用的MCU为STM32F4,下载完程序后,发现程序不允许,必须手动Reset才可以。
电脑需先安装KeilMDK5。此固件库为Keil官方提供,直接双击安装即可,安装成功后在MDK5工程的Device中可以选择STM32f4该系列的ARM芯片。
以上就是关于STM32F1和STM32F4 区别全部的内容,包括:STM32F1和STM32F4 区别、stm32上烧录程序为什么要按boot+reset、求助,stm32f4的DSP库怎么使用等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)