1.32位即表示32个二进制位(0/1)即32根线,每根线可以表示0/1两种状态,所以可以表示2^32=4GB的大小,CM3 采用了哈佛结构,拥有独立的指令总线和数据总线,可以让取指与数据访问
并行不悖。 这样一来数据访问不再占用指令总线,从而提升了性能。 为实现这个特性, CM3 内部
含有好几条总线接口,每条都为自己的应用场合优化过,并且它们可以并行工作。但是另一方面,
指令总线和数据总线共享同一个存储器空间(一个统一的存储器系统)。换句话说,不是因为有两
条总线,可寻址空间就变成 8GB 了
;
2.ARM 处理器对存储器空间的访问分辨率以字节为最小单位;ARM 处理器还支持 16bit 数据(2 字节)的存储器访问和 32bit数据(4 子节)的存储器访问。在ARM 中将32 位的数据称之为‘字’,将 16 位的数据称之为‘半字
3.51系列单片机是一个8位的单片机,因为只能执行8位宽的指令。Arm是一个32位的结构,不但可以执行32位的指令(称为arm指令集),也可以执行16位的指令(称为Thumb指令集)。
4.__I、 __O 、__IO是什么意思?
这是ST库里面的宏定义,定义如下:
#define __I volatile const /*!< defines 'read only' permissions */
#define __O volatile /*!< defines 'write only' permissions */
#define __IO volatile
/*!< defines 'read / write' permissions */
5.stm32的中断有16个可编程的优先级(4位,2^4=16),设置中断优先级组0~4,就是设置有几个抢占优先级和几个响应优先级,数字越小优先级越高,注意抢占优先级和响应优先级的区别,具体见正点原子库开发手册。
6.往函数里写参数的时候会有assert_param()的函数来判断参数写的是否正确即我们能写的是哪些函数:
。补:关于宏函数的用法,面试题:用宏函数比较两数大小,返回最小的
#define MIN(x,y) ((x)<(y)?(x):(y))
7.关于用fsmc驱动lcd时,RS用地址线A10(fsmc[A10])来控制1/0:
8.STM32L476RG时钟树的配置:SYSCLK和SYSTICK是两个概念。前者是系统时钟源后者是系统定时器
9.I2C的学习记录{
(1)I2C总线的工作原理及其特点:I2C总线是一种用于IC器件之间连接的二线制总线,最早由Philips公司推出。它通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息,
并根据地址识别每个器件,不管是单片机、存储器、LCD驱动器还是键盘接口。串行扩展总线有突出的优点,电路结构简单,程序编写方便,易于实现用户系统软硬件的模块化、标准化等。
(2)采用I2C总线标准的单片机或IC器件,其内部不仅有I2C接口电路,而且将内部各单元电路按功能划分为若干相对独立的模块,通过软件寻址实现片选,减少了器件片选线的连接。
http://www.eeworld.com.cn/qrs/2015/0324/article_21358.html(具体)
}
10.将结构体写入EEPROM{
结构体中的变量可能是8位,16位或者32位,一般用的EEPROM数据线是8位,所以在往EEPROM写数据函数中可以将传入的数据指针强制转换成uint8_t类型即(uint8_t*),然后用sizeof()求出
要写入的结构体的大小。
}