本帖最后由 Mcuzone_TKN 于 2020-5-14 16:17 编辑
关键词: Microchip Atmel SAM4E SAM4E-EK SAM4E16E 芯片 MOUSE USB 鼠标 HID 按键
概述:这个例子展示了如何实现一个USB设备HID鼠标
按下按键1 鼠标上移,按下按键2,鼠标下移。按下按键3,相当于鼠标右键。
打开产品光盘SAM4E16E-EK/SAM4E16E-EK中文资料/softpack软件包/Atmel Studio 7,打开15_MOUSE_EXAMPLE例子。
- int main(void)
- {
- sysclk_init();
- irq_initialize_vectors();
- cpu_irq_enable();
- // 初始化管理器
- sleepmgr_init();
- board_init();
- ui_init();
- ui_powerdown();
- //启动USB堆栈
- udc_start();
- //主循环只管理电源模式
- // 因为USB管理是通过中断来完成的
- while (true) {
- #ifdef USB_DEVICE_LOW_SPEED
- // 没有USB中断在低速可以用在低速扫描鼠标界面,然后使用主循环
- if (main_b_mouse_enable) {
- static volatile uint16_t virtual_sof_sub = 0;
- static uint16_t virtual_sof = 0;
- if (sysclk_get_cpu_hz()/50000 ==
- virtual_sof_sub++) {
- virtual_sof_sub = 0;
- static uint16_t virtual_sof = 0;
- ui_process(virtual_sof++);
- }
- }
- #else
- sleepmgr_enter_sleep();
- #endif
- }
- }
- void main_suspend_action(void)
- {
- ui_powerdown();
- }
- void main_resume_action(void)
- {
- ui_wakeup();
- }
- void main_sof_action(void)
- {
- if (!main_b_mouse_enable)
- return;
- ui_process(udd_get_frame_number());
- }
- void main_remotewakeup_enable(void)
- {
- ui_wakeup_enable();
- }
- void main_remotewakeup_disable(void)
- {
- ui_wakeup_disable();
- }
- bool main_mouse_enable(void)
- {
- main_b_mouse_enable = true;
- return true;
- }
- void main_mouse_disable(void)
- {
- main_b_mouse_enable = false;
- }
复制代码
|