返回列表 发新帖

SAM4E-EK开发板代码解读13——MOUSE

[复制链接] 0
回复
20051
查看
打印 上一主题 下一主题

28

主题

45

帖子

1万

积分

允许发帖

积分
10186
楼主
跳转到指定楼层
发表于 2020-5-14 15:53:21 | 只看该作者 回帖奖励 |正序浏览 | 阅读模式
本帖最后由 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例子。

  1. int main(void)
  2. {
  3. sysclk_init();
  4. irq_initialize_vectors();
  5. cpu_irq_enable();
  6. // 初始化管理器
  7. sleepmgr_init();
  8. board_init();
  9. ui_init();
  10. ui_powerdown();

  11. //启动USB堆栈
  12. udc_start();
  13. //主循环只管理电源模式
  14. // 因为USB管理是通过中断来完成的
  15. while (true) {
  16. #ifdef   USB_DEVICE_LOW_SPEED
  17.   // 没有USB中断在低速可以用在低速扫描鼠标界面,然后使用主循环
  18.   if (main_b_mouse_enable) {
  19.    static volatile uint16_t virtual_sof_sub = 0;
  20.    static uint16_t virtual_sof = 0;
  21.    if (sysclk_get_cpu_hz()/50000 ==
  22.     virtual_sof_sub++) {
  23.     virtual_sof_sub = 0;
  24.     static uint16_t virtual_sof = 0;
  25.     ui_process(virtual_sof++);
  26.    }
  27.   }
  28. #else
  29.   sleepmgr_enter_sleep();
  30. #endif
  31. }
  32. }
  33. void main_suspend_action(void)
  34. {
  35. ui_powerdown();
  36. }
  37. void main_resume_action(void)
  38. {
  39. ui_wakeup();
  40. }
  41. void main_sof_action(void)
  42. {
  43. if (!main_b_mouse_enable)
  44.   return;
  45. ui_process(udd_get_frame_number());
  46. }
  47. void main_remotewakeup_enable(void)
  48. {
  49. ui_wakeup_enable();
  50. }
  51. void main_remotewakeup_disable(void)
  52. {
  53. ui_wakeup_disable();
  54. }
  55. bool main_mouse_enable(void)
  56. {
  57. main_b_mouse_enable = true;
  58. return true;
  59. }
  60. void main_mouse_disable(void)
  61. {
  62. main_b_mouse_enable = false;
  63. }
复制代码



回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表