CH571 藍(lán)牙HID+輪詢按鍵 程序不定時卡死/重啟

如題,使用自制板,測試HID_Keyboard和HID_Mouse例程正常,移植到工程里,定時發(fā)送也正常,加入輪詢按鍵發(fā)包就不正常,表現(xiàn)為快速按幾下就容易重啟,不能穩(wěn)定復(fù)現(xiàn)。如果不啟用休眠,就不那么容易,但還是會有重啟/卡死現(xiàn)象。


按鍵處理邏輯如下:(在 uint16_t HidEmu_ProcessEvent(uint8_t task_id, uint16_t events) 中)

????static?BOOL?pressed?=?FALSE;
????if?(events?&?START_REPORT_MOUSE_EVT)?{?//?Mouse?event
????????if?(!GPIOA_ReadPortPin(GPIO_K4))?{
????????????if?(!pressed)?{
????????????????GPIOA_SetBits(GPIO_LED);
????????????????hidEmuSendMouseReport(1,?0,?0);
????????????????pressed?=?TRUE;
????????????????PRINT("K4\n");
????????????}
????????}?else?{
????????????if?(pressed)?{
????????????????hidEmuSendMouseReport(0,?0,?0);
????????????????pressed?=?FALSE;
????????????????GPIOA_ResetBits(GPIO_LED);
????????????}
????????}

????????tmos_start_task(hidEmuTaskId,?START_REPORT_MOUSE_EVT,
????????????????MS1_TO_SYSTEM_TIME(100));
????????return?(events?^?START_REPORT_MOUSE_EVT);
????}


連接參數(shù)如下:

//?Param?update?delay
#define?START_PARAM_UPDATE_EVT_DELAY?????????12800

//?HID?idle?timeout?in?msec;?set?to?zero?to?disable?timeout
#define?DEFAULT_HID_IDLE_TIMEOUT?????????????60000

//?What?is?the?advertising?interval?when?device?is?discoverable?(units?of?625us,?80=50ms)
#define?DEFAULT_ADVERTISING_INTERVAL?????????400

//?Minimum?connection?interval?(units?of?1.25ms)
#define?DEFAULT_DESIRED_MIN_CONN_INTERVAL????70

//?Maximum?connection?interval?(units?of?1.25ms)
#define?DEFAULT_DESIRED_MAX_CONN_INTERVAL????80

//?Slave?latency?to?use?if?parameter?update?request
#define?DEFAULT_DESIRED_SLAVE_LATENCY????????0

//?Supervision?timeout?value?(units?of?10ms)
#define?DEFAULT_DESIRED_CONN_TIMEOUT?????????500


急求解,卡了幾天了....




另外說明,使用中斷置位并在任務(wù)中發(fā)包也一樣重啟。。。


重啟卡死現(xiàn)象并不一樣。如果是芯片重啟,打印復(fù)位狀態(tài)寄存器查看復(fù)位原因;如果是卡死,可以看下是否進(jìn)入hardfault,同時根據(jù)之前提供的PC指針打印的方法查看異常的原因。

其次使用PM例程,里面有睡眠通過GPIO喚醒,使用該GPIO測試是否會出現(xiàn)上述的異常情況。如果出現(xiàn),請發(fā)送郵件至郵箱lpc@wch.cn,我們這里進(jìn)行查看。



PM是好的,單獨(dú)BLE鍵鼠也是好的,所有的復(fù)位都顯示是RPOR,從來沒有別的。。

HardFault基本不觸發(fā),觸發(fā)也是看到是BLE庫里面的函數(shù)出錯,我也沒法解決啊。。。


總結(jié),重啟概率是99%,不睡眠就不容易觸發(fā),睡眠越深,重啟越快。有時候,重啟后BLE還沒連接,按下按鍵又重啟了。測量供電電壓均正常,低壓中斷配的2V3根本不觸發(fā)。



PC指針的打印是有對應(yīng)原因,優(yōu)先查看對應(yīng)的原因是什么,同時指向庫里面的函數(shù),查看是否有在什么時候主動調(diào)用了。

其次在測試HID例程中開啟睡眠一般是通過宏開啟,那么在你的代碼中是否有跟例程調(diào)用的方式存在不一樣,優(yōu)先檢查該點(diǎn)。

注意如果是使用Shutdown睡眠后喚醒是會復(fù)位的。

還存在問題的話,代碼發(fā)送至lpc@wch.cn。


只有登錄才能回復(fù),可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频