欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3310|回復: 8
打印 上一主題 下一主題
收起左側

關于單片機中斷服務函數變量問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:550952 發表于 2020-2-27 09:04 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
void Service0(void) interrupt 1
{
        uint i, j;
}
void Service0(void) interrupt 1
{
        static uint i, j;
}
在中斷服務函數里使用局部變量和靜態變量有什么區別嗎?
在實際程序運行時好像沒有什么不一樣。

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:215444 發表于 2020-2-27 12:33 | 只看該作者
你這種寫法 我真沒用過 你要用靜態變量 就卸載函數前面不就好了。。
回復

使用道具 舉報

板凳
ID:275826 發表于 2020-2-27 17:22 | 只看該作者
當static關鍵字修飾局部變量時,只會對該變量初始化一次。

當static關鍵字修飾局部變量時,該變量在程序中只有一份內存。

當static關鍵字修飾局部變量時,該變量的作用域不會改變。

當static關鍵字修飾局部變量時,該變量的生命周期被延長,直到程序結束才銷毀。
回復

使用道具 舉報

地板
ID:462827 發表于 2020-2-28 09:33 | 只看該作者
用靜態變量它只初始化一次,下次中斷進入時能繼續沿用上一次中斷該變量保持的值。
回復

使用道具 舉報

5#
ID:169549 發表于 2024-4-22 16:14 | 只看該作者
如是不加STATIC修飾,每進一次中斷變量都會重新賦一次初值。
回復

使用道具 舉報

6#
ID:828160 發表于 2024-4-22 17:24 | 只看該作者
k455619 發表于 2020-2-27 12:33
你這種寫法 我真沒用過 你要用靜態變量 就卸載函數前面不就好了。。

局部變量,只能在定義的函數里面使用,進入函數時變量的值不確定,使用前要先初始化一下,退出函數后被釋放。

靜態變量就是只能在這個函數里面使用的全局變量,它有局部變量的特性,也有全局變量的特性,只能在定義的函數里面使用,再次進入函數時會保持之前的狀態,退出函數時不會被釋放。
回復

使用道具 舉報

7#
ID:883242 發表于 2024-4-22 18:05 | 只看該作者
8位單片機因為資源太有限,c語言編譯器是靜態分配局部變量的,也就是說局部變量是一個固定的地址,樓主兩種寫法效果大概率會一樣,小概率不一樣是因為為了高效利用RAM,多個函數可以共用一個局部變量地址,看下map文件就行了。

標準c語言局部變量是在棧上面的,進入函數臨時分配,static局部變量是在堆上面跟全局變量在一起,兩者執行起來效果就大不相同了。
回復

使用道具 舉報

8#
ID:1117825 發表于 2024-4-22 19:58 | 只看該作者
靜態變量會保持它的狀態,下一次進來依然可以讀取到上一次的數值,而且只作用于該函數內
回復

使用道具 舉報

9#
ID:195496 發表于 2024-4-24 18:14 | 只看該作者
中斷中用靜態變量,可以在下次進中斷時,保持上次的值不變
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表