一、stm32f407zetx
使用的开发平台为GECM4开发板,M4开发板搭载的芯片是ST公司设计的芯片,型号为STM32F407ZET6,芯片采用的内核为ARM公司设计的Cortex M4内核(主频高达168MHZ,带DSP和FPU 浮点运算单元),对于芯片型号的说明可以参考ST公司提供的芯片选型手册。
STM32 32位MCU
F 基础型
407 高性能
Z 引脚数目144
E 闪存容量 512K
T 封装QFP
6 温度范围 -40 ~ +85
二、stm32的程序下载
STM32想要下载程序的方法有两种:串口下载 + 下载器下载(JTAG、JLINK、STLINK.....),这里就涉及到STM32启动方式(自举模式)。这里可以参考STM32F4中文参考手册的2.4章节。
stm32的启动方式有三种,从用户闪存启动、从系统存储器启动、从SRAM启动。
STM32的自举模式可以通过芯片的两个引脚BOOT0和BOOT1进行配置,这两个引脚在芯片复位时的电平状态决定了芯片复位之后从哪个区域运行程序。
1、主Flash启动 (推荐)(BOOT1 = X BOOT0 = 1)
指的是从用户闪存空间启动(FLash空间 512K),也是最常用的工作模式,一般用JTAG接口和SW接口下载程序的时候意味着程序要下载到Flash中,在复位之后也是从Flash运行程序。一般用户闪存(Flash)可以反复擦除10万次左右,所以不用担心芯片锁死或者被擦爆。
2、系统存储器启动(BOOT1 = 0 BOOT0 = 1)
系统存储器指的是芯片中一块固定的区域,这块区域的程序的功能是由芯片厂商在出厂的时候就写入的一段程序,也被称为启动引导程序(BootLoader),是无法修改的,所以系统存储器其实就是一块ROM(只读存储器),一般通过系统存储器启动都是打算采用串口下载的方式烧写程序(ST公司的固件中包含了串口下载的功能),但是一般不常用,因为配置起来比较麻烦。
3、SRAM启动
空间小,不过可以不用担心擦爆问题,一般不推荐。
4、今日面试题:
定义一个结构体,需4字节对齐,则应填入的V1,V2,V3,V4,V5,V6值为:
#define PADS(x,y) char pad##x[y]
typedef struct
{
short a;
PADS(v1,v2);
char b[3];
PADS(v3,v4);
char *p;
PADS(v5,v6);
}ST_TEST;
A.0,1,0,4,0,0
B.1,2,3,4,5,6
C.100,2,1234,1,0,0
D.1,2,3,7,1,12
我认为的答案是:C,题目一开始定义了一个函数宏,将x,y输入到PADS这个函数中,再将pad与x[y]连接,##是连接符。所以我认为x的作用只是作为下标使用的,所以要看y的取值,也就是看v2,v4,v6的取值即可。
short占2字节,char b[3]占3个字节,char *p 占一个字节。
4字节对齐:
v2可能是:0~2之间
v4可能是:0~1之间
v6可能是:0~3之间
四个选项中只有C符合上面的描述,2+1+0。