这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 活动中心 » 板卡试用 » 【STM32H7S78-DK评测】-2-使用USB模拟鼠标点击操作

共1条 1/1 1 跳转至

【STM32H7S78-DK评测】-2-使用USB模拟鼠标点击操作

菜鸟
2024-09-20 23:15:27     打赏

STM32开发板上有USB HS与FS各一个,还有一个是STLINK调试接口。其中USB1是HS OTG。

image.png

image.png



image.png


image.png

CubeMx自动生成的HID 鼠标的描述:

__ALIGN_BEGIN static uint8_t HID_MOUSE_ReportDesc[HID_MOUSE_REPORT_DESC_SIZE] __ALIGN_END =
{
0x05, 0x01,        /* Usage Page (Generic Desktop Ctrls)     */
0x09, 0x02,        /* Usage (Mouse)                          */
0xA1, 0x01,        /* Collection (Application)               */
0x09, 0x01,        /*   Usage (Pointer)                      */
0xA1, 0x00,        /*   Collection (Physical)                */
0x05, 0x09,        /*     Usage Page (Button)                */
0x19, 0x01,        /*     Usage Minimum (0x01)               */
0x29, 0x03,        /*     Usage Maximum (0x03)               */
0x15, 0x00,        /*     Logical Minimum (0)                */
0x25, 0x01,        /*     Logical Maximum (1)                */
0x95, 0x03,        /*     Report Count (3)                   */
0x75, 0x01,        /*     Report Size (1)                    */
0x81, 0x02,        /*     Input (Data,Var,Abs)               */
0x95, 0x01,        /*     Report Count (1)                   */
0x75, 0x05,        /*     Report Size (5)                    */
0x81, 0x01,        /*     Input (Const,Array,Abs)            */
0x05, 0x01,        /*     Usage Page (Generic Desktop Ctrls) */
0x09, 0x30,        /*     Usage (X)                          */
0x09, 0x31,        /*     Usage (Y)                          */
0x09, 0x38,        /*     Usage (Wheel)                      */
0x15, 0x81,        /*     Logical Minimum (-127)             */
0x25, 0x7F,        /*     Logical Maximum (127)              */
0x75, 0x08,        /*     Report Size (8)                    */
0x95, 0x03,        /*     Report Count (3)                   */
0x81, 0x06,        /*     Input (Data,Var,Rel)               */
0xC0,              /*   End Collection                       */
0x09, 0x3C,        /*   Usage (Motion Wakeup)                */
0x05, 0xFF,        /*   Usage Page (Reserved 0xFF)           */
0x09, 0x01,        /*   Usage (0x01)                         */
0x15, 0x00,        /*   Logical Minimum (0)                  */
0x25, 0x01,        /*   Logical Maximum (1)                  */
0x75, 0x01,        /*   Report Size (1)                      */
0x95, 0x02,        /*   Report Count (2)                     */
0xB1, 0x22,        /*   Feature (Data,Var,Abs,NoWrp)         */
0x75, 0x06,        /*   Report Size (6)                      */
0x95, 0x01,        /*   Report Count (1)                     */
0xB1, 0x01,        /*   Feature (Const,Array,Abs,NoWrp)      */
0xC0               /* End Collection                         */
};

在应用代码中添加:

int main(void)
{

/* USER CODE BEGIN 1 */

/* USER CODE END 1 */

/* Enable the CPU Cache */

/* Enable I-Cache---------------------------------------------------------*/
SCB_EnableICache();

/* Enable D-Cache---------------------------------------------------------*/
SCB_EnableDCache();

/* MCU Configuration--------------------------------------------------------*/

/* Update SystemCoreClock variable according to RCC registers values. */
SystemCoreClockUpdate();

/* Reset of all peripherals, Initializes the Flash interface and the Systick. */
HAL_Init();

/* USER CODE BEGIN Init */

/* USER CODE END Init */

/* USER CODE BEGIN SysInit */

/* USER CODE END SysInit */

/* Initialize all configured peripherals */
MX_GPIO_Init();
MX_USB_DEVICE_Init();
/* USER CODE BEGIN 2 */

/* USER CODE END 2 */

/* Infinite loop */
/* USER CODE BEGIN WHILE */
while (1)
{
/* USER CODE END WHILE */

/* USER CODE BEGIN 3 */
	HAL_GPIO_TogglePin(LD2_ORANGE_GPIO_Port, LD2_ORANGE_Pin);
	HAL_Delay(1000);
	if(flag_userButton_Pressed == 1){
		buff[0] = 0x02;
		USBD_HID_SendReport(&hUsbDeviceHS, buff, sizeof(buff));
		HAL_Delay(100);
		buff[0] = 0x00;
		USBD_HID_SendReport(&hUsbDeviceHS, buff, sizeof(buff));

		flag_userButton_Pressed = 0;
	}
}
/* USER CODE END 3 */
}

其中flag_userButton_Pressed 标志位是在按键的ISR中进行置位的。

QQMail_0 (7).gif






关键词: STM32H7S78-DK     鼠标    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]