Mcuzone 野芯科技
标题:
SAM4E-EK开发板代码解读13——MOUSE
[打印本页]
作者:
Mcuzone_TKN
时间:
2020-5-14 15:53
标题:
SAM4E-EK开发板代码解读13——MOUSE
本帖最后由 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;
}
复制代码
欢迎光临 Mcuzone 野芯科技 (http://testbbs.mcuzone.com/)
Powered by Discuz! X3.1