STM32F103 USB固件开发-移植JoyStickMouse(2)
1.JoyStickMouse 功能说明
JoyStickMouse是ST官方提供的一个模拟USB鼠标的测试代码。使用的是USB HID功能。实现的功能是通过按键控制鼠标的移动和方向。
2.函数入口分析
3.PZ6806L的按键电路分析
分析:
KEY_UP的IO口是 PA0,外接上拉电阻,高电平是按下
KEY_LEFT的IO口是 PE2,外接下拉电阻,低电平是按下
KEY_DOWN的IO口是 PE3,外接下拉电阻,低电平是按下
KEY_RIGHT的IO口是 PE4,外接下拉电阻,低电平是按下
4.代码修改
4.2 IO口初始化调用过程
main() -> Set_System() -> STM_EVAL_PBInit
4.2 需要修改IO口引脚定义的宏,//后面是旧的IO口定义
IO口定义在文件 stm3210b_eval.h 中。
部分修改后如下:
/**
* @brief Joystick Right push-button
* 右移按键,需要修改为实际使用的IO-PE4
*/
#define RIGHT_BUTTON_PIN GPIO_Pin_4 // GPIO_Pin_0
#define RIGHT_BUTTON_GPIO_PORT GPIOE
#define RIGHT_BUTTON_GPIO_CLK RCC_APB2Periph_GPIOE
#define RIGHT_BUTTON_EXTI_LINE EXTI_Line4 // EXTI_Line0
#define RIGHT_BUTTON_EXTI_PORT_SOURCE GPIO_PortSourceGPIOE
#define RIGHT_BUTTON_EXTI_PIN_SOURCE GPIO_PinSource4 // GPIO_PinSource0
#define RIGHT_BUTTON_EXTI_IRQn EXTI4_IRQn // EXTI0_IRQn
/**
* @brief Joystick Left push-button
* 左移按键,需要修改为实际使用的IO-PE2
*/
#define LEFT_BUTTON_PIN GPIO_Pin_2 // GPIO_Pin_1
#define LEFT_BUTTON_GPIO_PORT GPIOE
#define LEFT_BUTTON_GPIO_CLK RCC_APB2Periph_GPIOE
#define LEFT_BUTTON_EXTI_LINE EXTI_Line2 // EXTI_Line1
#define LEFT_BUTTON_EXTI_PORT_SOURCE GPIO_PortSourceGPIOE
#define LEFT_BUTTON_EXTI_PIN_SOURCE GPIO_PinSource2 // GPIO_PinSource1
#define LEFT_BUTTON_EXTI_IRQn EXTI2_IRQn // EXTI1_IRQn
/**
* @brief Joystick Up push-button
* 上移按键,需要修改为实际使用的IO-PA0
*/
#define UP_BUTTON_PIN GPIO_Pin_0 // GPIO_Pin_8
#define UP_BUTTON_GPIO_PORT GPIOA // GPIOD
#define UP_BUTTON_GPIO_CLK RCC_APB2Periph_GPIOA // RCC_APB2Periph_GPIOD
#define UP_BUTTON_EXTI_LINE EXTI_Line0 // EXTI_Line8
#define UP_BUTTON_EXTI_PORT_SOURCE GPIO_PortSourceGPIOA // GPIO_PortSourceGPIOD
#define UP_BUTTON_EXTI_PIN_SOURCE GPIO_PinSource0 // GPIO_PinSource8
#define UP_BUTTON_EXTI_IRQn EXTI0_IRQn // EXTI9_5_IRQn
/**
* @brief Joystick Down push-button
* 下移按键,需要修改为实际使用的IO-PE3
*/
#define DOWN_BUTTON_PIN GPIO_Pin_3 // GPIO_Pin_14
#define DOWN_BUTTON_GPIO_PORT GPIOE // GPIOD
#define DOWN_BUTTON_GPIO_CLK RCC_APB2Periph_GPIOE // RCC_APB2Periph_GPIOD
#define DOWN_BUTTON_EXTI_LINE EXTI_Line3 // EXTI_Line14
#define DOWN_BUTTON_EXTI_PORT_SOURCE GPIO_PortSourceGPIOE // GPIO_PortSourceGPIOD
#define DOWN_BUTTON_EXTI_PIN_SOURCE GPIO_PinSource3 // GPIO_PinSource14
#define DOWN_BUTTON_EXTI_IRQn EXTI3_IRQn // EXTI15_10_IRQn
4.3 需要修改按键检测代码
hw_config.c
5 测试
在将USB2接入windows系统后,可以用上下左右按键控制鼠标移动,说明移植修改成功。
到这里代码移植已经完成。后面一个章节会对USB的描述符分析,包括HID描述符。
6 备注
工程下载:
链接:https://pan.baidu.com/s/1h_Kjw2TJXkwaEMRsvFSQ7A
提取码:sppz
目录:标准函数库\扩展实验\USB实验\USB设备\JoyStickMouse(2).rar