最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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)體問題的評論 (共 條)

分享到微博請遵守國家法律
浙江省| 福安市| 东明县| 扶余县| 临安市| 永济市| 时尚| 万州区| 醴陵市| 诸城市| 辽阳县| 彰化县| 瑞丽市| 全椒县| 互助| 县级市| 尚志市| 洛扎县| 长乐市| 个旧市| 玉山县| 阿拉尔市| 抚顺县| 高碑店市| 安国市| 冷水江市| 新乐市| 安国市| 大城县| 新乡县| 宜都市| 峨边| 灵璧县| 元江| 顺义区| 周至县| 木里| 临武县| 万年县| 桐柏县| 沽源县|