หลายๆ ครั้งที่ Debug หลังจาก กดปุ่ม แมลงทับๆ แว้ว
มันชอบขึ้นว่า error pulstack 0x100000008 อะไรนี่แหล่ะ
ตอนนี้ มั่วๆ แก้ที่ไฟล์ startup_md.c
เพิ่มจากเดิม 100 เป็น 400 เลย
บทมันจะเป็น ก็เป็นเรื่อยๆ ดีบักไม่ได้
คราวที่ไม่เป็น ก็ไม่เป็น
สรุป มันมีทางแก้ไหมครับ
แล้วบางที ตอนดีบัก
มันก็เด้งมา เข้า Default Haddler ที่ไฟล์ startup_md.c
ไม่รู้ว่าเป็นเพราะอะไร
ทั้งที่ ปิด interrupt ไปแล้ว
มันเกิดเพราะอะไรอ่ะครับ
ขอบคุณล่วงหน้าครับ
8)
error pulstack นี่ผมก็ยังไม่เคยเจอครับ
ส่วนเด้งเข้า Default Handler ลองเช็คพวก Fault Handler ทั้งหลายดูครับ ประกาศ Function Interrupt ให้มันต่างหาก แล้วใส่ while(1); ไว้ บางทีถ้ามัน Detect เจอว่ามีความผิดพลาดเกิดขึ้นมันจะเด้งไปพวก Fault Handler ครับ
คงต้องตรวจจับดูว่ามันเป็น hard fault, MemManage, Bus fault
ผมเคยตรวจจับ register bas fault ดังนั้
/**
* @brief This function handles Bus Fault exception.
* @param None
* @retval None
*/
void BusFault_Handler(void)
{
bus = SCB->CFSR;
/* Go to infinite loop when Bus Fault exception occurs */
while (1)
{
}
}
ดีบักดูรีจีสเตอร์บิต SCB->CFSR ว่า error เพราะอะไร มีไฟล์แนบมาด้วย
ในถามตอบนี้ผมก็เคยทำนะลองค้นดู ผมหาไม่เจอแล้ว โปรเจค Oscilloscope อะไรนี่แหละ