五月天青色头像情侣网名,国产亚洲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)體問題的評論 (共 條)

分享到微博請遵守國家法律
高唐县| 大方县| 湘潭县| 民县| 夹江县| 卫辉市| 交城县| 金山区| 和林格尔县| 萨迦县| 双鸭山市| 永顺县| 固始县| 织金县| 衡南县| 平潭县| 昌平区| 营口市| 鹤壁市| 璧山县| 安阳县| 神农架林区| 阜宁县| 屏山县| 文安县| 新平| 肇东市| 马尔康县| 渭源县| 会理县| 泰安市| 盐山县| 崇阳县| 金湖县| 永年县| 永州市| 本溪市| 嵩明县| 丽水市| 修武县| 土默特右旗|