GPIO:通用I/O引脚 STM32F429IGT6 共有176个引脚,其中I/O引脚144个;每组16个引脚分为9组:A0 ~ A15 —— I0 ~ I15;
GPIO有两种输出方式:
推挽输出:两个MOS管同时工作且状态相反,可以进行选择高电平以及低电平可以加快 导通 / 截止 的速度;
开漏输出:只有N-MOS工作,无高电平输出,可以使用一个上拉电阻提供高电平;
还存在一种高阻态 介于高低电平之间,内部上下电阻消高阻态
电阻动作可进行上拉、下拉以及浮空不动作
GPIO的输入方式:有模拟信号输入 与 数字信号输入 且模拟信号不可以直接转化为数字信号。
预处理 (将所有.h文件复制到.c)-->>编译(.c — > .s生成.s文件)-->>汇编(.s — > .o)— >链接(提取多个.o文件中被使用的内容生成可执行文件.exe)
其中在Windows中生成.elf
其中在Linux中生成.bin/.hex
可执行文件分为三段 :
.bss(可优化段)没被使用的数据
.data(数据段)全局变量 地址 静态变量 常量
底层:.code(代码段);可映射指令集
SRAM(存放临时数据):
创建 栈 空间,地址指向首地址;
创建 堆 空间,地址指向末地址;
硬件控制通过寄存器的方式实现:地址映射(找到寄存器类似于寻找地址)
在进行程序编写时首先要确定硬件版的路径;确定需要用到的器件所使用的引脚。
硬件初始化
(确定使用的)时钟源打开
通过RCC打开 GPIOH (LED使用的路径‘H’)的时钟源
RCC首地址 0x40023800(查找说明书确定地址2.2)
外设初始化
GPIOH首地址 0x40021C00
PH10 ----输出
(在进行编写时首要宏定义各大地址的起始坐标如图:(地址在手册上查询))
偏移量代表移动。
输出:GPIOH_MODER ---- 0x100000设置为输出 偏移 0x00(输出指针的起始地址)
推免:GPIOH_OTYPER -----0x00000000推挽 偏移 0x04
上拉:GPIOH_PUPDR -----0x100000设置为上拉 偏移0x0C
速度:GPIOH_OSPEEDR-- 0x00000000速度低速 偏移0x08
再由硬件控制高低电平:
GPIOH_ODR 偏移 0x14