1
GPIO(通用IO引脚)
总引脚176个 IO引脚144个
每16个一组 A0-A15 16个 9组
高低电平输出 I O数字控制
GPIO 输出
钳位防止电压过高 过低 复位 0 置位 1
推挽 加速高低电平切换 实现高低电平的来回切换 控制
开漏 没有高电平 想用高电平必须要用上拉电阻
GPIO 输入
模拟 不是数字信号
通过施密特 低电平 0.7直接到0 高电平2.4直接到3.3 直接到峰值
出1 或者0
施密特 防止高阻态 (在高低电平之间)
上拉电阻(产生高电平)
下拉电阻(产生低电平)
浮空(既不是高电平也不是低电平)
复用 其他串口 也可以用GPIO引脚
2
复位信号 32pc程序寄存器 (类似数组)硬件交互 pc之间交互数据
1 预处理 { .h->.C .h都变成.c文件
宏展开 别名替换 枚举替换}
2 编译 .c->.s(汇编语言) 每一个.c生成一个.s文件
3汇编 .s->.o(目标文件) 每一个.s生成一个.o文件
4链接
.o .exe
.o .elf linux
.o .bin/.hex keil
可执行文件
交叉编译 简单地说,就是在一个平台上生成另一个平台上的可执行代码。同一个体系结构可以运行不同的操作系统
可执行文件
.bss 可优化 没有被使用的数据O0 O3 优化等级
.date 数据段 全局变量 常量(没有局部变量) 地址 静态变量
.code 代码段 ARM命令类 while for if 判断类 或者那种循环 命令类
3
flash创建
flash 1Mbyte
栈空间 指向 SRAM首地址
堆空间(malloc)申请 指向SRAM尾地址
SRAM 256kbyte
首地址与尾地址之间叫做堆栈增长区
地址映射 根据地址找到GPIO引脚
AMBA
高数总线 AHB
标准总线 APB
使能 EN enable 能
失能 DIS disable 不能
4
程序编写流程
根据电路图
1打开时钟源
2
外设初始化
复位 GPIO引脚
找到H首地址
找到输出
上拉
低速
2
硬件控制
高低电平输出
切换