欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

GD32 HID 键盘矩阵键盘在发送数据时一直发送数据问题处理

最编程 2024-04-19 16:56:35
...

这个问题找了两三天,开始并不认为是示例程序的问题,只是感觉是自己代码问题。

这个解决流程大概是: 先调好矩阵键盘=> 调用发送函数。

就是因为调用时,一直发送数据,我也在按键抬起做了操作,始终不行。

最后,发现时示例代码中有个 空闲中断 引起的。

	udev->regs.dr->DIEPFEINTEN |= 1U << ep_num;

这个空闲中断好像是只要引脚是高电平,始终会发送数据。

于是,我就把这个代码做了调整。

usb_status usb_transc_inxfer1 (usb_core_driver *udev, usb_transc *transc)
{
    usb_status status = USB_OK;

    uint8_t ep_num = transc->ep_addr.num;

    __IO uint32_t epctl = udev->regs.er_in[ep_num]->DIEPCTL;
    __IO uint32_t eplen = udev->regs.er_in[ep_num]->DIEPLEN;

    eplen &= ~(DEPLEN_TLEN | DEPLEN_PCNT);

    /* zero length packet or endpoint 0 */
    if (0U == transc->xfer_len) {