先楫半导体 HPM6750测评 Step3 (RT-Thread + TinyUSB)
<p> 最近看到RT-Thread Studio有了大版本的更新(V4.1),并且增加了TinyUSB软件包支持,TinyUSB是我之前项目上一直使用的,所以本节使用RT-Thread Studio进行项目的创建</p><p> TinyUSB是用于嵌入式系统的开源跨平台USB主机/设备堆栈,旨在实现无动态分配的内存安全和延迟所有中断事件的线程安全,然后在非ISR任务功能中进行处理。TinyUSB支持的很多厂商的芯片比如ST、NXP、MicroChip等 乐鑫的ESP32 S系列也是支持使用TinyUSB进行USB开发。</p>
<p> TinyUSB的移植和操作都很简单 搭配上RT-Thread Studio更加简单。</p>
<p> 1.安装所需要的先楫SDK</p>
<p> 2.在项目中添加TinyUSB软件包</p>
<p>3.在硬件配置中使能USB Device 设备</p>
<p>4.调整TinyUSB软件包配置</p>
<p>5.新建hid_test文件 写入测试hid通讯的代码</p>
<p>#include <rtthread.h><br />
#include <rtdevice.h><br />
#include "rtt_board.h"<br />
#include <tusb.h></p>
<p>struct __attribute__((__packed__)) reportHID_t {<br />
//uint8_t reportId;<br />
int8_t X;<br />
int8_t Y;<br />
int8_t Z;<br />
int8_t Rz;<br />
int8_t Ry;<br />
int8_t Rx;<br />
uint8_t HatSwitch;<br />
uint32_t button;<br />
};</p>
<p>struct reportHID_t reportHID;<br />
static void hid_test_entry(void *parameter)<br />
{<br />
(void) parameter;<br />
static uint32_t send_failed_cnt;<br />
reportHID.X = 127;<br />
reportHID.Y = 127;<br />
reportHID.Z = -127;<br />
reportHID.Rx = 0;<br />
reportHID.Ry = 127;<br />
reportHID.Rz = 127;<br />
reportHID.button = 1;<br />
uint8_t res = false;<br />
while (1)<br />
{<br />
if (tud_suspended())<br />
{<br />
rt_kprintf("tud_suspended!!!\r\n");<br />
tud_remote_wakeup();<br />
}<br />
else<br />
{<br />
res = tud_hid_report(3,(uint8_t*)&reportHID, 11);<br />
if(reportHID.button<2147483648)<br />
{<br />
reportHID.button*=2;<br />
}<br />
else<br />
{<br />
reportHID.button = 1;<br />
}<br />
if(!res)<br />
{<br />
send_failed_cnt++;<br />
rt_kprintf("Send Failed :%d Times\r\n",send_failed_cnt);<br />
}</p>
<p> }<br />
rt_thread_mdelay(500);<br />
}<br />
}</p>
<p>static int init_hid_test(void)<br />
{<br />
rt_thread_t hid_test;</p>
<p> hid_test = rt_thread_create("hid test", hid_test_entry, RT_NULL,<br />
PKG_TINYUSB_STACK_SIZE,<br />
PKG_TINYUSB_THREAD_PRIORITY, 10);<br />
if (hid_test == RT_NULL)<br />
{<br />
rt_kprintf("Fail to create HID Test thread");<br />
return -1;<br />
}<br />
rt_kprintf("init_hid_test create success!!!\r\n");<br />
rt_thread_startup(hid_test);<br />
return 0;<br />
}</p>
<p>MSH_CMD_EXPORT(init_hid_test, init hid test)</p>
<p> </p>
<p>6.编译 下载 测试</p>
<p></p>
<p>7.HID按照我们的程序逻辑在工作。 完成!</p>
<p>TinyUSB的移植和操作看着是不复杂</p>
<p>rt支持蛮快的。</p>
页:
[1]