五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

嵌入式軟件開發(fā)的基礎(chǔ)知識(5)結(jié)構(gòu)體問題

2023-03-03 23:16 作者:云漢含星  | 我要投稿

????在開發(fā)過程中,經(jīng)常會需要很多的標志位。標志位的狀態(tài)大多數(shù)都僅僅占用一兩個bit。所以為了節(jié)省內(nèi)存占用,方便管理標志位,使用結(jié)構(gòu)體和聯(lián)合體的方式。

????如下所示定義結(jié)構(gòu)體,聯(lián)合體,以及初始化聯(lián)合體。其中定義部分可以放到 .h 文件中。初始化可以放到 .c 文件中。并且該變量可以在 .h 文件中 extern 出去,在外部使用。

注意事項:

????因為我是做伺服研發(fā)的,所以程序需要內(nèi)外環(huán)不同時序調(diào)度。
????主循環(huán)1K調(diào)度 (1ms調(diào)度一次)
????位置環(huán)4K調(diào)度 (250us中斷調(diào)度一次)
????速度環(huán)和電流環(huán)16K調(diào)度(62.5us中斷調(diào)度一次,中斷優(yōu)先級最高

????因為16K和4K的程序都是中斷函數(shù)。所以16K可以打斷4K和1K調(diào)度的程序。4K也可以打斷1K的主循環(huán)。

????如果存在不同環(huán)路對同一個Union操作,則位域賦值操作過程中可能會被中斷打斷,造成數(shù)據(jù)丟失。例如1K對Union的任意bit賦值時,被16K程序打斷,且在16K程序中執(zhí)行了對Union任意bit的寫操作。在16K程序執(zhí)行完成后,1K程序從堆?;謴同F(xiàn)場,就會導致16K中的賦值操作無效。

????如果有學過多線程,應(yīng)該很熟悉這個問題。但是很遺憾,裸機開發(fā)沒有鎖和臨界區(qū)這種東西。所以不同時序?qū)ν粋€數(shù)據(jù)進行寫操作一定存在風險。要避免不同調(diào)度中對一個變量進行賦值。如果某個Union不同調(diào)度中有寫操作,那就老老實實的用Uint8變量來表示標志。 如果是變量存在不同調(diào)度的寫入操作,那這就沒辦法了。(Union的所有的bit賦值都存在風險。但是使用的Uint8數(shù)據(jù)只會和自己沖突。

????

? ??



嵌入式軟件開發(fā)的基礎(chǔ)知識(5)結(jié)構(gòu)體問題的評論 (共 條)

分享到微博請遵守國家法律
中宁县| 都昌县| 余姚市| 和平区| 高陵县| 澳门| 突泉县| 封开县| 安达市| 阿勒泰市| 天全县| 余江县| 正定县| 四会市| 泰兴市| 祁连县| 隆安县| 迁安市| 柘荣县| 石泉县| 南京市| 砚山县| 垣曲县| 丰都县| 科技| 苍南县| 万州区| 布尔津县| 昌图县| 保康县| 酒泉市| 西城区| 读书| 阜阳市| 宁阳县| 名山县| 松桃| 永年县| 湾仔区| 英超| 河间市|