1、MDK安装和获取STM32所有芯片包
安装芯片包
1、第一步
2、第二步
搜索STM32 (其他芯片类似)
3、第三步
①双击对应的芯片系列②点击install
4、第四步
①下载中②下载完成后,打开MDK窗口,重新加载一下即可
芯片包下载和安装目录
keil安装路径:Kile_5\ArmPacks.Download例如:D:\Program Files\Kile_5\ArmPacks.Download
芯片包安装目录
keil安装路径:Kile_5\Kile_5\ArmPacks\Keil例如:D:\Program Files\Kile_5\ArmPacks\Keil
2、GPIO->ODR与GPIO_Pin同作为实现输出时的差异是什么?GPIO->ODR是32位的输出数据寄存器(高16位保留,低16为依次对应某个GPIO口的16个引脚)。对ODR赋值是一次操作16位的,也便是同时设置了16个引脚的输出电平;而GPIO_PIN是指某个端口的详细某一个引脚,是位操作,可以通过设置BSRR或BRR寄存器来设置某一特定引脚的输出电平,而保持其他引脚输出不变,速率快,效率高。详细可以看看stm32参考手册关于GPIO寄存器的解释。
3、STM32F4 的 FPU
FPU 即浮点运算单元(Float Point Unit)。浮点运算,对付定点 CPU(没有 FPU 的 CPU)来说必须要按照 IEEE-754 标准的算法来完成运算,是相称耗费韶光的。而对付有 FPU 的 CPU来说,浮点运算则只是几条指令的事情,速率相称快。STM32F4 属于 Cortex M4F 架构,带有 32 位单精度硬件 FPU,支持浮点指令集,相对付Cortex M0 和 Cortex M3 等,赶过数十倍乃至上百倍的运算性能。
STM32F4 硬件上要开启 FPU 是很大略的,通过一个叫:协处理器掌握寄存器(CPACR)的寄存器设置即可开启 STM32F4 的硬件 FPU,该寄存器各位描述如图。
这里我们便是要设置 CP11 和 CP10 这 4 个位,复位后,这 4 个位的值都为 0,此时禁止访问协处理器(禁止了硬件 FPU),我们将这 4 个位都设置为 1,即可完备访问协处理器(开启硬件 FPU),此时便可以利用 STM32F4 内置的硬件 FPU 了。CPACR 寄存器这 4 个位的设置,我们在 system_stm32f4xx_c 文件里面开启,代码如下:
void SystemInit(void)
{
/ FPU settings ------------------------------------------------------------/
#if (__FPU_PRESENT == 1) && (__FPU_USED == 1)
SCB->CPACR |= ((3UL << 102)|(3UL << 112)); / set CP10 and CP11 Full Access /
/(3UL << 102)|(3UL << 112)代表将CP10和CP11的位置1,个中102代表位置移动10位,112代表移动11位/
#endif
……//省略部分代码
}
此部分代码是系统初始化函数的部分内容,功能便是设置 CPACR 寄存器的 20~23 位为 1,以开启 STM32F4 的硬件 FPU 功能。从程序可以看出,只要我们定义了全局宏定义标识符__FPU_PRESENT 以及__FPU_USED 为 1,那么就可以开启硬件 FPU。个中宏定义标识符__FPU_PRESENT 用来确定处理器是否带 FPU 功能,标识符__FPU_USED 用来确定是否开启FPU 功能。
实际上,由于 F4 是带 FPU 功能的,以是在我们的 stm32f4xx.h 头文件里面,我们默认是定义了__FPU_PRESENT 为 1。大家可以打开文件搜索即可找到下面一行代码:#define __FPU_PRESENT 1
但是,仅仅只是解释处理器有 FPU 是不足的,我们还须要开启 FPU 功能。开启 FPU 有两种方法,第一种是直接在头文件 STM32f4xx.h 中定义宏定义标识符__FPU_USED 的值为 1。也可以直接在 MDK 编译器上面设置,我们在 MDK5 编译器里面,点击魔术棒按钮,然后在 Target选项卡里面,设置 Floating Point Hardware 为 Use Single Precision,如图 51.1.1.2 所示:
经由这个设置,编译器会自动加入标识符__FPU_USED 为 1。这样碰着浮点运算就会利用硬件 FPU 干系指令,实行浮点运算,从而大大减少打算韶光。末了,总结下 STM32F4 硬件 FPU 利用的要点:
1, 设置 CPACR 寄存器 bit20~23 为 1,使能硬件 FPU。
2, MDK 编译器 Code Generation 里面设置:Use FPU。
经由这两步设置,我们的编写的浮点运算代码,即可利用 STM32F4 的硬件 FPU 了,可以大大加快浮点运算速率。
4、Julia 分形简介
Julia集是一种在复平面上非发散点形成的分形点的凑集。例如,对付复变函数的一个通项公式,
假设这里的常数C总是小于2 ,当我们迭代次时,创造。那么很显然,之后的会变得越来越大,以是这样的点是发散的。同理,也存在无论迭代多少次都不会发散,这样的点就构成Julia集。然而,按照这种判断方法,我们不可能精确找出所有的非发散点。由于如果当我们迭代次时,仍旧有,但是随着迭代次数连续增大,发散点总有一次会超过这个限定,而这个次数可能会很大,超过我们设置的迭代次数,以是这样的判断是不足准确的 。但这不妨碍我们可以利用这种方法近似找出Julia集的点。由于随着的增加,这样判断出的点集会不断逼近Julia集,从而我们可以得到一个近似的Julia凑集。详细思路为:
设置迭代次数 、收敛半径 、次数 和常数 ;设置一个复数点集为初始点集 ,带入公式 打算 ;找出 的点,记录这些点的位置矩阵 ;重复2、3步骤 次;画出矩阵 ,即Julia集的图像。