問:我得到一個錯誤:“function * appears in multiple call graphs: rooted at *”,這是什么意思?
答:它意味著有一個函數(shù)既在中斷里調(diào)用了又在主函數(shù)中調(diào)用了,而編譯器是不支持重入的。因為函數(shù)是不能重入的,所以它基于在兩個地方同時調(diào)用的可能性而報這個錯誤。有幾種辦法可以繞開這個問題:
1. 如果ROM空間允許的話,可以把這個函數(shù)復制一份并另取一個不一樣的名稱。一個給中斷調(diào)用,另一個給主函數(shù)調(diào)用。
2. 重寫這個函數(shù),讓它不帶參數(shù)并且沒有局部變量。如果函數(shù)沒有參數(shù)和局部變量,那么它將可以被中斷和主函數(shù)同時調(diào)用。
3. 如果你能夠保證這個函數(shù)一定不會同時被調(diào)用,那么你可以使用#pragma interrupt_level 偽指令。這個指令在使用說明書里已經(jīng)詳細說明了,這里簡單介紹如下:
#pragma interrupt_level 1
void common_func(void)
{
/* local variable definitions */
/* code */
}
#pragma interrupt_level 1
void interrupt isr(void)
{
common_func();
/* more code */
}
void main(void)
{
common_func(); /* 在中斷使能之前被調(diào)用 */
EI(); /* 使能中斷 */
/* more code */
-
編碼器
+關(guān)注
關(guān)注
45文章
3673瀏覽量
135295 -
MPLAB
+關(guān)注
關(guān)注
9文章
217瀏覽量
67035
發(fā)布評論請先 登錄
相關(guān)推薦
XC8編譯器與8位PIC MCU兼容嗎?
怎么在兼容模式下使用XC8編譯器
XC8編譯器中的eeprom_read/write宏出現(xiàn)問題
MPLAB XC8 C編譯器是否可以屏蔽/禁用有關(guān)pitch的咨詢報告?
MPLAB C18編譯器到MPLAB XC8 C編譯器的移植過程詳細中文資料概述
MPLAB XC8 C編譯器的用戶指南詳細中文資料概述免費下載
![<b class='flag-5'>MPLAB</b> <b class='flag-5'>XC8</b> C<b class='flag-5'>編譯器</b>的用戶指南詳細中文資料概述免費下載](https://file.elecfans.com/web1/M00/53/30/pIYBAFseQWeAOjkqAACZOYfuw-s369.png)
如何將C源代碼從MPLAB C18編譯器移植到MPLAB XC8C編譯器的詳細概述
![如何將C源代碼從<b class='flag-5'>MPLAB</b> C18<b class='flag-5'>編譯器</b>移植到<b class='flag-5'>MPLAB</b> <b class='flag-5'>XC8</b>C<b class='flag-5'>編譯器</b>的詳細概述](https://file.elecfans.com/web1/M00/52/F1/pIYBAFsYqfmAJIh9AACRTaIAtmw014.png)
MPLAB XC8入門教程之啟動指南資料免費下載
MPLAB C18到MPLAB XC8的移植概述
PIC MCC配置與XC8編譯器問題
![PIC MCC配置與<b class='flag-5'>XC8</b><b class='flag-5'>編譯器</b>問題](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
MPLAB XC8 PIC匯編器的簡單介紹
適用于AVR MCU的MPLAB XC8 C編譯器用戶指南
![適用于AVR MCU的<b class='flag-5'>MPLAB</b> <b class='flag-5'>XC8</b> C<b class='flag-5'>編譯器</b>用戶指南](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
適用于PIC MCU的MPLAB XC8 C編譯器用戶指南
![適用于PIC MCU的<b class='flag-5'>MPLAB</b> <b class='flag-5'>XC8</b> C<b class='flag-5'>編譯器</b>用戶指南](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
評論