STM8 单片机的触角——I/O 口的应用 4
1 玩转 I/O 口必备的“五器” STM8S208RB 单片机的I/O 口分布情况如图4-1 所示 图 4-1 STM8S208RB 管脚分布图 从图4-1 中我们可以看到,STM8S208RB 共有64 个引脚,其中52 个通用输入/输出口( GPIO),它们分别是PA1~ PA6、 PB0~ PB7、 PC1~ PC7、 PD0~ PD7、 PE0~ PE7、 PF0、 PF3~PF7、 PG0~ PG7、 PI0
其中,每个端口都有一个输出数据寄存器(ODR),一个输入引脚寄存器 ( IDR), 一个数据方向寄存器( DDR), 一个控制寄存器1( CR1), 一个控制寄存器2( CR2),这就是STM8 单片机I/O 的“五器”
“五器”到手了,该如何使用,如表4-1
配置模式 数据方向寄存器 DDR 控制寄存器1 CR1 控制寄存器2 CR2 配置模式 输入 0 0 0 悬浮输入 0 1 0 上拉输入 0 0 1 中断悬浮输入 0 1 1 中断上拉输入 输出 1 0 0 开漏输出 1 1 0 推挽输出 1 x 1 输出(最快速度10MHz) x x x 真正的开漏输出(特定引脚) 表 4-1 I/O 口配置表 由表4-1 中看出,当Px_DDRn 为“1”,Pxn 配置为输出,否则为输入
当配置为输入时,若 Px_CR1 为 “ 1”, 上拉电阻使能,否则为悬浮输入
而 Px_CR2 为 “ 1”时,开启当前I/O 口的外部中断功能,为“0”时关闭外部中断功能
若想读取该I/O 引脚上的数据,只需读取相应的Px_IDR 寄存器即可
当配置为输出时,若 Px_CR1 为 “ 1”, Pxn 配置为推挽输出,否则为开漏输出
而 Px_CR2为 “ 1” 时,当前I/O 口的最大输出速率为10MHz, 否则最大输出