1.平台: stm32f10x PS2小键盘
2.管脚:PS2_DATA PF11 PS2_CLK PF12
3.通码和断码的概念:
通码:故名思议,即ps2按键按下的键值码
断码:即ps2按键按下后松开时发送的键值码 格式为: F0 + 相应的通码 (除Enter,num等键)
4.PS2时序图:
device_to_host (即stm32作为读取端,ps2键盘发送数据)
状态0: start -----------------------------------起始位 clock下降沿采集DATA为0
状态1: DATA0---------------------------------数据D0,最低位
状态2: DATA1---------------------------------数据D1
状态3: DATA2---------------------------------数据D2
状态4: DATA3---------------------------------数据D3
状态5: DATA4---------------------------------数据D4
状态6: DATA5---------------------------------数据D5
状态7: DATA6---------------------------------数据D6
状态8: DATA7---------------------------------数据D7,最高位
状态9:PARITY--------------------------------奇偶校验位
状态10:STOP--------------------------------停止位 clock下降沿采集DATA为1
5.配置代码解析:
5.1编程思路:利用外部中断识别PS2_CLK下降沿,并在下降沿利用状态机实现读取键值
读取键值完毕需要对键值区分通断码,实现一次的ps2的识别
5.2库文件
“ps2.h”
#ifndef _ps2_H
#define _ps2_H
#include "stm32f10x.h"
#include "usart.h"