<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 |
RE:【连载】【ALIENTEK 战舰STM32开发板】STM32开发指南--第三十三章 FC游戏手柄控实验