GPIO常用于对某个模块的控制,比如振动马达的震动使能控制,LCD的背光使能控制,闪光灯的使能控制,耳机和喇叭功率放大器的输出控制。这些模块对上电时序要求都比较敏感,如果GPIO的选择不恰当,当CPU复位后代码还没有执行到GPIO的初始化模块的前面一段时间就会引起模块不稳定。ARM的GPIO都有一个复位默认状态,有些GPIO上电复位后默认上拉,有些是下拉,有些是没有上拉和下拉。所以设计各个子模块的时候,要根据模块的使能控制硬件引脚的有效电平去选择相应的GPIO引脚,保证ARM处理器上电复位后,它的默认输出电平能够将子模块设置到无效状态。否则模块上电的时候就会不稳定。比如,上电的时候马达乱震动,LCD屏幕还没有初始化就打开背光引起屏幕闪动,上电过程闪光灯乱闪,上电过程耳机有啪啪的杂音,喇叭有啪啪声。
比如,震动马达的模块的使能控制引脚的有效电平是高电平,也就是这个控制引脚为高电平的时候马达会震动,那么选择GPIO的时候要查看CPU的datasheet,选择一个GPIO,这个GPIO的上电复位状态是下拉状态的,这样系统上电的时候,这个GPIO为下拉,为低电平,这样就不会引起马达不受控制的乱震动。