Mcuzone_TKN 发表于 2020-5-14 15:53:21

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

本帖最后由 Mcuzone_TKN 于 2020-5-14 16:17 编辑

关键词:Microchip AtmelSAM4E SAM4E-EKSAM4E16E 芯片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;
}



页: [1]
查看完整版本: SAM4E-EK开发板代码解读13——MOUSE