KSDK USB 例程分析

在USB example里面文件:


lite为精简版,省略了很多USB枝干上的功能,保留了USB通讯部分的主干功能,我使用的是全功能版。


函数 BOARD_InitPins()中,主要是PORT以及GPIO相关的初始化。


1、使能PORT的时钟,当外设时钟没有打开时,程序不能读出外设寄存器的值,同时也不能使用外设。

2、通过PORT设置GPIO引脚功能,此处为设置LPUART功能。芯片手册P115。

3、将键盘涉及到的GPIO引脚统统都设为GPIO引脚(自己定义的函数)。

4、进行UART相关配置。

5、将USB 键盘对应的相关引脚都设置为输入引脚。

BOARD_BootClockRUN(),设置芯片时钟为48MHZ,总线时钟为24MHZ。

BOARD_InitDebugConsole(),主要是初始化UART相关的配置,例入波特率等等。

USB_DeviceApplicationInit(),这个函数很重要,应用初始化,这里的设置关乎于后面程序的成功与否,不过这里是KSDK已经实现了的,我们仅仅是需要做一下了解即可。

使能USB工作时钟。


这段代码是由宏定义给包裹起来的,根据注释可以粗略判断出,主要是针对KHCI USB中的RAM特定的,将RAM里面的数据全部清0。


对composite结构体进行简单的初始化。


USB_DeviceClassInit,这个函数比较重要,在上一个步骤中被初始化的g_UsbDeviceComposite.deviceHandle,将被在这个函数中重新赋予新的含义,里面设计到很多函数指针,推荐使用source insight可以看得清楚些。

另外,我这里将Mouse的相关函数给屏蔽掉了,因为我需要实现的是Keyboard。


USB_DeviceClassInit


configList也就是g_UsbDeviceCompositeConfigList



可以看到USB_DeviceHidKeyboardCallback显然是个很重要的主,我们进去look look。


从这个函数里面又会碰到另一个很重要的函数,USB_DeviceHidKeyboardAction(),这个函数里面也就是KSDK中需要我们自己写的用户处理操作函数。


这个案例默认键盘是不断发出PAGEUP和PAGEDOWN键值,这里只是演示,所以若是要实现真正的产品,那是必须要把这段代码注释掉,来从新写一段新的功能函数代码的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值