今天追了一早上的code
總算是追到出問題的部分了
出問題的是一個從USB中斷拿資料的的code
這是我6月剛開始做usb功能的時候就寫進去的
因為用到陣列 又用指標去接
我這塊依舊沒有很懂 所以之前都沒注意到有問題
其實在追code之前我就稍微有點頭緒
問題很大機會會在usb中斷
只是沒想到會在這
不過即便發現了問題我也還是不曉得為什麼會有問題
總之先從git上挖了前輩之前寫的code搬過來用就解決了
/*更改前*/
uint8_t pData[64];
USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*)hUsbDeviceFS.pClassData;
pData = hcdc->RxBuffer;
/*更改後*/
USBD_CDC_HandleTypeDef *hcdc = (USBD_CDC_HandleTypeDef*)hUsbDeviceFS.pClassData;
uint8_t *pData = hcdc->RxBuffer;
就只是這樣一個順序更改就能解決的問題
卡了我一個月 花了兩天多去找資料排除
要說差在哪
我也不是太清楚
應該重點在pData的型態吧
更改前pData是64個8byte的陣列
更改後是指向陣列的指標 占用4個byte
即便如此我還是不知道差在哪
燒腦
指標果然很深奧