STM32开发总结-寄存器相关
1.错误解决:Error: L6218E: Undefined symbol SystemInit (referred from startup_stm32f429_439xx.o).
按照文档一般main.c函数为空,所以才会有上面的错误。在main.c中添加如下代码即可
void SystemInit()
{
}
2.有如下warning,是因为main函数大括号下面要有换行。
compiling main.c...
main.c(10): warning: #1-D: last line of file ends without a newline
}
3.arm开发板soc,cpu,核外外设和片上外设。

4.存储器映射
在图 5-4 中,连接被控总线的是FLASH,RAM和片上外设,这些功能部件共同排列在一个4GB 的地址空间内。AMBA(advanced microcontroller bus architecture )片上总线是由ARM公司推出的。 AMBA规范主要包括了:AHB(Advanced High-performance Bus)系统总线和 APB(Advanced Peripheral Bus) 外围总线。其中,AHB的相互连接采用了传统的带有主模块和从模块的共享总线,接口与互连功能分离,这对芯片上模块之间的互连具有重要意义。AMBA已不仅是一种总线,更是一种带有接口模块的互连体系。

5.存储器功能划分




存储器本身没有地址,给存储器分配地址的过程叫存储器映射;
我们可以根据每个单元功能的不同,以功能为名给这个内存单元取一个别名,这个别名就是我们经常说的寄存器,这个给已经分配好地址的有特定功能的内存单元取别名的过程就叫寄存器映射。
C 语言的位操作方法
1. 把变量的某位清零
unsigned char a = 0x9f; //定义一个变量a = 1001 1111 b (二进制数)
a &= ~(1<<2); //对bit2 清零
2. 把变量的某几个连续位清零
//若把a 中的二进制位分成2 个一组
//即bit0、bit1 为第0 组,bit2、bit3 为第1 组,
// bit4、bit5 为第2 组,bit6、bit7 为第3 组
//要对第1 组的bit2、bit3 清零
a &= ~(3<<2*1);
//例如对第2 组bit4、bit5 清零
a &= ~(3<<2*2);
3. 对变量的某几位进行赋值
a |= (1<<2*2); 第2 组bit4、bit5 设置1
4. 对变量的某位取反
//把bit6 取反,其它位不变
a ^=(1<<6);
GPIO相关
GPIO 是通用输入输出端口的简称,简单来说就是STM32 可控制的引脚,STM32 芯片的GPIO 引脚与外部设备连接起来,从而实现与外部通讯、控制以及数据采集的功能。
STM32 芯片的GPIO 被分成很多组,每组有16 个引脚,如型号为STM32F4IGT6 型号的芯片有GPIOA、GPIOB、GPIOC 至GPIOI 共9 组GPIO,芯片一共176 个引脚,其中GPIO
就占了一大部分,所有的GPIO 引脚都有基本的输入输出功能。最基本的输出功能是由STM32 控制引脚输出高、低电平,实现开关控制,如把GPIO引脚接入到LED 灯,那就可以控制LED 灯的亮灭,引脚接入到继电器或三极管,那就可
以通过继电器或三极管控制外部大功率电路的通断。最基本的输入功能是检测外部输入电平,如把GPIO 引脚连接到按键,通过电平高低区分按键是否被按下。
RCC_AHB1ENR |= (1<<7);/*开启 GPIOH 时钟,使用外设时都要先开启它的时钟*/
GPIOH_MODER &= ~( 0x03<< (2*10));
GPIOH_MODER |= (1<<2*10);
GPIOH_OTYPER &= ~(1<<1*10);
GPIOH_OTYPER |= (0<<1*10);
GPIOH_OSPEEDR &= ~(0x03<<2*10);
GPIOH_OSPEEDR |= (0<<2*10);
GPIOH_PUPDR &= ~(0x03<<2*10);
GPIOH_PUPDR |= (1<<2*10);
浙公网安备 33010602011771号