国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

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

分享到微博請遵守國家法律
邛崃市| 延寿县| 安乡县| 玛纳斯县| 南和县| 宁安市| 陆丰市| 郁南县| 平塘县| 扶绥县| 迁安市| 平乡县| 武穴市| 锦州市| 酉阳| 安宁市| 彝良县| 萨嘎县| 普宁市| 长汀县| 塘沽区| 大渡口区| 德安县| 清水河县| 当雄县| 含山县| 涞水县| 嘉鱼县| 朝阳县| 眉山市| 长治县| 梅州市| 乌拉特前旗| 多伦县| 荥经县| 高密市| 湄潭县| 黑河市| 常宁市| 中宁县| 赤峰市|