新聞中心

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

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

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

原因:

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

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

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

摘抄總結(jié):

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

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

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

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



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

評(píng)論


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

關(guān)閉