<div style="padding-bottom: 5px; line-height: 1.5; background-color: rgb(255,255,255); margin: 0px; padding-left: 5px; padding-right: 5px; color: rgb(0,0,0); font-size: 12px; padding-top: 5px"><a name="_Toc342394281">33.2 硬件设计
本实验采用STM32的3个普通IO连接FC手柄的Clock、Data和Latch信号,本章实验功能简介:在主函数不停的查询手柄输入,一旦检测到输入信号,则在LCD模块上面显示键值和对应的按键符号。同样我们也是用LED0来指示程序正在运行。
所要用到的硬件资源如下:
1) 指示灯DS0
2) TFTLCD模块
3) FC手柄
前两个,在之前的实例已经介绍过了,FC手柄属于外部器件。战舰STM32开发板板载了一个FC手柄接口(就是一个DR9接头,在开发板上标号为JOY_PAD),该接口与MCU的连接原理图如33.2.1所示:
图33.2.1 FC手柄接头与STM32的连接电路图
图中,JOY_PAD就是用来连接FC手柄的,该接头采用标准的DR9座,战舰STM32开发板上有2个DR9座,一个用来接FC手柄(有JOY_PAD字样,LCD左上),另外一个用来接RS232串口(有COM字样,LCD右上),这两个头千万不要接错!否则可能烧坏手柄或者烧坏STM32。
从上图我们知道,手柄的CLK(Clock)、LAT(Latch)和DAT(Data)分别连接在STM32的PC12、PC8和PC9上面,这里与SDIO部分信号线共用了,所以当使用SDIO的时候,就不能使用FC手柄了。因为信号线都是直连的,所以我们在开发板上不需要做配置,只需要将FC手柄插入JOY_PAD插口即可。
开发板配套的手柄,见图33.1.1。
33.3 软件设计
打开上一章的工程,首先在HARDWARE文件夹下新建一个REMOTE的文件夹。然后新建一个joypad.c和joypad.h的文件保存在JOYPAD文件夹下,并将这个文件夹加入头文件包含路径。
打开joypad.c文件,输入如下代码:
#include "joypad.h"
//初始化手柄接口.
void JOYPAD_Init(void)
{
RCC->APB2ENR|=1CRH|=0X00030083;
GPIOC->ODR|=3START->UP->DOWN->LEFT->RIGHT.
//总共8位,对于有C按钮的手柄,按下C其实就等于A+B同时按下.
//按下是0,松开是1.
//返回值:
//[0]:右
//[1]:左
//[2]:下
//[3]:上
//[4]:Start
//[5]:Select
//[6]:B
//[7]:A
u8 JOYPAD_Read(void)
{
u8 temp=0;
u8 t;
JOYPAD_LAT=1; //锁存当前状态
JOYPAD_LAT=0;
<div style="margin: 5px 0px"> for(t=0;t |