新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > Nuvoton單片機(jī)調(diào)試

Nuvoton單片機(jī)調(diào)試

作者: 時間:2016-11-26 來源:網(wǎng)絡(luò) 收藏
1、用keildebug調(diào)試Nano系列MCU時,偶爾進(jìn)入HardFault_Handler中程序死掉了。

原因:

本文引用地址:http://m.butianyuan.cn/article/201611/322016.htm

1)定義變量時的類型是char,外部文件調(diào)用時聲明的是extern int,同一變量定義與外部聲明不一致而導(dǎo)致錯誤。

2)用DMA時,1byte傳輸,數(shù)據(jù)手冊中要求地址要字對齊,由于是外設(shè)與內(nèi)存之間使用dma,定義的數(shù)組在程序中換了定義的位置結(jié)果導(dǎo)致數(shù)據(jù)不正確,debug時還進(jìn)入HardFault_Handler中,調(diào)整數(shù)組定義的地址就可以了。

摘抄總結(jié):

Cortex-M3/4的Fault異常是由于非法的存儲器訪問(比如訪問0地址、寫只讀存儲位置等)和非法的程序行為(比如除以0等)等造成的。常見的4種異常及產(chǎn)生異常的情況如下:

Bus Fault:在fetch指令、數(shù)據(jù)讀寫、fetch中斷向量或中斷時存儲恢復(fù)寄存器棧情況下,檢測到內(nèi)存訪問錯誤則產(chǎn)生Bus Fault。

Memory Management Fault:訪問了內(nèi)存管理單元(MPU)定義的不合法的內(nèi)存區(qū)域,比如向只讀區(qū)域?qū)懭霐?shù)據(jù)。

Usage Fault:檢測到未定義指令或在存取內(nèi)存時有未對齊。



關(guān)鍵詞: Nuvoton單片機(jī)調(diào)

評論


技術(shù)專區(qū)

關(guān)閉