关于定时器中断执行内容较多导致的蓝牙超时

请问

我的方案MCU使用了CH579M,是键盘外设

现在遇到一个情况,就是在定时器中断(TMR3)中点亮WS2812B的时候

如果中断间隔时间较短  (10ms左右) 并且操作100个左右的ws2812b(我使用的是nop 引脚间隔来模拟驱动)

会导致蓝牙超时报错 linkTerminate.reason 0x08   

关闭WS2812B相关后或者加大中断间隔就没出现过这个情况


已经有其他设备占用了SPI0+DMA

请问 我可以用外部晶振引脚 PA10/PA11  使用TMR1/2 + DMA的形式来驱动ws2812b 这样可以解决这个问题吗?

蓝牙可以不使用 外接 32KHz晶振吗?

蓝牙使用主机功能务必外接32K,其他情况可以用内部32K;

蓝牙连接时,其他任务的执行时长不要超过连接间隔的一半,否则会出现断开的情况。

在驱动其他功能且耗时的任务,可以将连接间隔协商大一些。

蓝牙BLE从机Peripheral讲解一(广播间隔和连接间隔) - SweetTea_lllpc - 博客园 (cnblogs.com)


键盘外设应该就是从机吧? 那是不是就可以使用内部32K? 
连接间隔协商 

调大一点是指 把

// Minimum connection interval (units of 1.25ms, 6=7.5ms)                                   //最小连接间隔

#define DEFAULT_DESIRED_MIN_CONN_INTERVAL    6

// Maximum connection interval (units of 1.25ms, 100=125ms)                                 //最大连接间隔

#define DEFAULT_DESIRED_MAX_CONN_INTERVAL    100

两个参数都适当调大吗?  还是只调整最大间隔?


最小间隔/最大间隔都调大。

键盘可以使用内部32K,精度相比较外部32K会低一些。


好的 感谢 我尝试一下


只有登录才能回复,可以选择微信账号登录