wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

標題: 關于如何提高代碼的執行效率-進階篇 [打印本頁]

作者: qinlu123    時間: 2025-3-10 10:55
標題: 關于如何提高代碼的執行效率-進階篇
我在上一篇帖子簡單展示了如何使用狀態機來替代阻塞延時,這一篇我將向大家展示如何使用結構體和函數指針來構建對象。假設有個需求是需要三個LED分別按照5HZ、1HZ和0.5HZ的頻率來閃爍,我們應該怎么實現它呢?如果按照上篇的解決方案需要三個LED_Twinkle函數,只是函數內部關于開關LED的部分不一樣。這樣存在一個問題,假如LED_Twinkle是一個非常復雜函數,那么寫三遍非常費時費力容易出bug并且編譯出的可執行文件體積還大。于是乎面向對象和代碼分層呼之欲出,廢話不多說先上代碼。

  1. struct LED_Obj
  2. {
  3.    uint8_t Status;
  4.    uint16_t DelayTime_LED;
  5.    void (*LED_OnOff)(uint8_t Com);
  6. };
  7. void LED1_OnOff(uint8_t Com)
  8. {
  9.    if(Com != 0)
  10.    {
  11.      LED1(ON);
  12.    }
  13.    else
  14.    {
  15.      LED1(OFF);
  16.    }
  17. }
  18. void LED2_OnOff(uint8_t Com)
  19. {
  20.    if(Com != 0)
  21.    {
  22.      LED2(ON);
  23.    }
  24.    else
  25.    {
  26.      LED2(OFF);
  27.    }
  28. }
  29. void LED3_OnOff(uint8_t Com)
  30. {
  31.    if(Com != 0)
  32.    {
  33.      LED3(ON);
  34.    }
  35.    else
  36.    {
  37.      LED3(OFF);
  38.    }
  39. }
  40. struct LED_Obj LED1 =
  41. {
  42.    .LED_OnOff = LED1_OnOff
  43. };
  44. struct LED_Obj LED2 =
  45. {
  46.    .LED_OnOff = LED2_OnOff
  47. };
  48. struct LED_Obj LED3 =
  49. {
  50.    .LED_OnOff = LED3_OnOff
  51. };
  52. void DelayTimeCount_ms(uint16_t *DelayTime_Count)
  53. {
  54.    if(*DelayTime_Count==0)
  55.    {
  56.      *DelayTime_Count=0;
  57.    }
  58.    else
  59.    {
  60.      *DelayTime_Count-=1;
  61.    }
  62. }
  63. void Set_Delay_Time(uint16_t Time,uint16_t *DelayTime_Count)
  64. {
  65.    *DelayTime_Count=Time;
  66. }
  67. uint8_t CheckDelay(uint16_t *DelayTime_Count)
  68. {
  69.    if(*DelayTime_Count==0)
  70.    {
  71.      return 0;
  72.    }
  73.    else
  74.    {
  75.      return 1;
  76.    }
  77. }
  78. void LED_Twinkle(struct LED_Obj *LED,uint16_t HarfPeriod)
  79. {
  80.    switch(LED->Status)
  81.    {
  82.      case 0:
  83.      {
  84.         LED->LED_OnOff(ON);
  85.         Set_Delay_Time(HarfPeriod,&LED->DelayTime_LED);
  86.         LED->Status++;
  87.       }break;
  88.      case 1:
  89.      {
  90.         if(CheckDelay(&LED->DelayTime_LED) == 0)
  91.         {
  92.            LED->Status++;
  93.         }
  94.      }break;
  95.      case 2:
  96.      {
  97.         LED->LED_OnOff(OFF);
  98.         Set_Delay_Time(HarfPeriod,&LED->DelayTime_LED);
  99.         LED->Status++;
  100.       }break;
  101.      case 3:
  102.      {
  103.        if(CheckDelay(&LED->DelayTime_LED) == 0)
  104.        {
  105.          LED->Status = 0;
  106.        }
  107.      }break;
  108.    }
  109. }
  110. void LED_Run(void)
  111. {
  112.    LED_Twinkle(&LED1,100);
  113.    LED_Twinkle(&LED2,500);
  114.    LED_Twinkle(&LED3,1000);
  115. }
  116. void Task_1mS(void)
  117. {
  118.    DelayTimeCount_ms(&LED1.DelayTime_LED);
  119.    DelayTimeCount_ms(&LED2.DelayTime_LED);
  120.    DelayTimeCount_ms(&LED3.DelayTime_LED);
  121. }
復制代碼



這段代碼涉及到結構體和函數指針的語法知識,關于語法這里不再贅述,我來介紹一下這段代碼是如何面向對象和分層的。
結構體:

struct LED_Obj
{
    uint8_t Status;
    uint16_t DelayTime_LED;
    void (*LED_OnOff)(uint8_t Com);
};



該結構體成員包括運行狀態變量(Status)、LED開關延時變量(DelayTime_LED)以及作為上下層接口用來控制LED開關的函數指針(*LED_OnOff)(uint8_t Com)
硬件層部分:

void LED1_OnOff(uint8_t Com);
void LED2_OnOff(uint8_t Com);
void LED3_OnOff(uint8_t Com);
這三個函數就是控制IO來實現LED開關
結構體實例化(對象):


struct LED_Obj LED1 =
{
    .LED_OnOff = LED1_OnOff
};
struct LED_Obj LED2 =
{
    .LED_OnOff = LED2_OnOff
};
struct LED_Obj LED3 =
{
    .LED_OnOff = LED3_OnOff
};



因為我們有3個LED需要控制,所以需要創建3個LED_Obj對象并實現硬件層和應用層的連接(函數指針初始化,指向一個函數)
應用層:


void LED_Twinkle(struct LED_Obj *LED,uint16_t HarfPeriod)
{
    switch(LED->Status)
    {
        case 0:
        {
            LED->LED_OnOff(ON);
            Set_Delay_Time(HarfPeriod,&LED->DelayTime_LED);
            LED->Status++;
        }break;
        case 1:
        {
            if(CheckDelay(&LED->DelayTime_LED) == 0)
            {
                LED->Status++;
            }
        }break;
        case 2:
        {
            LED->LED_OnOff(OFF);
            Set_Delay_Time(HarfPeriod,&LED->DelayTime_LED);
            LED->Status++;
        }break;
        case 3:
        {
            if(CheckDelay(&LED->DelayTime_LED) == 0)
            {
                LED->Status = 0;
            }
        }break;
    }
}
void LED_Run(void)
{
    LED_Twinkle(&LED1,100);
    LED_Twinkle(&LED2,500);
    LED_Twinkle(&LED3,1000);
}
void Task_1mS(void)
{
    DelayTimeCount_ms(&LED1.DelayTime_LED);
    DelayTimeCount_ms(&LED2.DelayTime_LED);
    DelayTimeCount_ms(&LED3.DelayTime_LED);
}

至此,我們就實現了三個LED的分別控制。




作者: qinlu123    時間: 2025-3-10 11:08
注意LED(ON)屬于形式代碼,對于stm32來說可能是HAL_GPIO_WritePin(GPIOA, GPIO_PIN_15, GPIO_PIN_RESET);或者PAout(15) = 0;對于51單片機來說可能是P1^0 = 0;
作者: wwzgch    時間: 2025-3-12 07:58
雖然看不懂,但是得先點贊
作者: qinlu123    時間: 2025-3-12 16:46
wwzgch 發表于 2025-3-12 07:58
雖然看不懂,但是得先點贊

我步子邁大啦?
作者: wwzgch    時間: 2025-3-12 21:41
qinlu123 發表于 2025-3-12 16:46
我步子邁大啦?

是我這理解能力有待進步,平時都是用8位機。都是簡單的寫法,向群主學習
作者: ohshit    時間: 2025-3-13 09:05
間下AI怎么寫
作者: qinlu123    時間: 2025-3-13 10:06
wwzgch 發表于 2025-3-12 21:41
是我這理解能力有待進步,平時都是用8位機。都是簡單的寫法,向群主學習

我回復你之后,你的頁面右上角頭像左邊那里會有提醒嗎
作者: qinlu123    時間: 2025-3-13 16:06
大家可以把我上邊的代碼復制到deepseek,NNT的比我解釋的都好
作者: qinlu123    時間: 2025-3-13 16:22
我并沒有系統學習過面向對象編程,只是在工作中經常遇到很多重復功能,比如有好多個DS18B20接口(獨立總線),有好多個同型號的IIC設備(獨立總線),有好多個PID控制器等等。經過不斷摸索不斷嘗試,發現這種編寫代碼的方法最高效最易讀最易維護,直到后來我才知道原來我這種寫作方法就是面向對象。狀態機+面向對象可以使工作特別高效,我現在連操作系統都看不上(項目沒那么復雜)。希望初學者不要像我一樣多走好幾年彎路,提早走向面向對象編程的懷抱。
作者: wwzgch    時間: 2025-3-13 18:49
qinlu123 發表于 2025-3-13 10:06
我回復你之后,你的頁面右上角頭像左邊那里會有提醒嗎

消息里面會有提醒,平時我登陸這個網站不多
作者: qinlu123    時間: 2025-3-14 07:54
發表于 2025-3-13 18:49
消息里面會有提醒,平時我登陸這個網站不多

@admin為啥我沒有提醒
作者: wwzgch    時間: 2025-3-14 10:51
qinlu123 發表于 2025-3-13 16:22
我并沒有系統學習過面向對象編程,只是在工作中經常遇到很多重復功能,比如有好多個DS18B20接口(獨立總線 ...

是的,不想被淘汰就要不斷的學習新的編程思想和技巧。樓主平時都用什么MCU做方案
作者: 188610329    時間: 2025-3-14 23:35
標題和內容不符,
標題是: 關于如何提高代碼的執行效率
而實際是: 反而降低了執行效率




歡迎光臨 (http://www.izizhuan.cn/bbs/) Powered by Discuz! X3.1
怕怕欧美视频免费大全| 国产精品久久久久影院老司 | 999精品视频| 日本电影欧美片| 欧美另类极限扩张| 国产精品美女视频免费观看软件 | aaaa黄色片| 亚洲中文字幕无码一区二区三区| 91精品视频免费观看| 中文字幕视频在线免费欧美日韩综合在线看| 午夜欧美视频在线观看| 99精品欧美一区二区三区小说| 亚洲大片在线| 你微笑时很美电视剧整集高清不卡| 国产不卡123| 欧美zozo| 黄网站免费入口| 九色精品视频在线观看| 亚洲精品久久久久久动漫器材一区| 中文字幕影音先锋| 制服丝袜第二页| 色www免费视频| 国产a级黄色大片| 欧美xxxx黑人又粗又长密月 | 91精品国产综合久久蜜臀| 亚洲色图.com| 91最新地址在线播放| 老鸭窝毛片一区二区三区| 日韩欧美自拍| 亚州av日韩av| 久久亚洲精精品中文字幕| 久久男人av资源站| 黄色免费在线网站| 国产在线观看精品一区| 五月天婷婷综合社区| 开心婷婷激情五月| 国产精品午夜剧场| 四虎永久免费| 日本免费不卡视频| 国产内射老熟女aaaa∵| 日韩视频在线观看一区| 久久久久久久久艹| 希岛爱理中文字幕| 性色国产成人久久久精品| 麻豆国产精品一区| 中文字幕 亚洲一区| 国产欧美视频一区| 国产一区二区黑人欧美xxxx| 日韩美女视频在线| 欧美一二三四在线| 日韩欧美精品三级| 91精品国产免费久久综合| 91成人免费网站| 欧美午夜一区二区三区| 欧美性猛交xxxxx水多| 午夜精品久久久久久久久久 | 成人区精品一区二区| 国产欧美在线播放| 国产精品久久久久久久久久免费 | 日本精品另类| 在线一区视频观看| 欧美日韩精品免费观看视欧美高清免费大片| 久久亚洲资源| 99久久精品免费看国产小宝寻花| 亚洲羞羞网站| 国产99re66在线视频| 黄色精品免费看| 黑人极品ⅴideos精品欧美棵| 免费黄色网页在线观看| 国精产品一区| av白虎一区| 欧美xnxx| 午夜免费欧美电影| 天美av一区二区三区久久| 国产精品免费不| 亚洲色图二区| 亚欧成人精品| 国产一区91精品张津瑜| 成人免费视频国产在线观看| 久久久精品人体av艺术| 亚洲色图.com| 欧美亚洲丝袜传媒另类| 欧美一区在线视频| 亚洲人成网在线播放| 久久久成人的性感天堂| 欧洲日韩成人av| 91精品在线播放| 欧美极品视频一区二区三区| 亚洲精品偷拍视频| 999精品网站| 久久久久亚洲av片无码v| 欧美性xxxx图片| 老司机成人免费视频| 三级黄色在线视频| xxxx18国产| 国产中文字幕网| 97视频在线| 国产福利在线看| 最新欧美色图| 美女视频亚洲色图| 伊人久久成人| 大陆成人av片| 亚洲一线二线三线久久久| 欧美老女人在线| 国产一区二区三区直播精品电影| 538国产精品视频一区二区| 99视频日韩| 路边理发店露脸熟妇泻火| 成年人网站大全| 91网站免费入口| 日韩少妇裸体做爰视频| 丰满熟妇乱又伦| 一个人看的视频www在线观看免费| 毛片毛片毛片毛片| 色操视频在线| 久9re热视频这里只有精品| 亚洲第一黄网| 久久久精品人体av艺术| 日本韩国精品在线| 日韩在线中文字| 91亚洲精品一区| 欧美一级免费播放| 亚洲精品视频久久久| 欧美日韩精品一区| 欧美爱爱视频免费看| 国精品无码人妻一区二区三区| 精品视频久久久久| 午夜在线观看视频18| 369你懂的电影天堂| 影音先锋在线视频| 色综合久久中文| 日韩不卡一区二区| 一区二区高清免费观看影视大全| 亚洲国产精品悠悠久久琪琪| 88国产精品欧美一区二区三区| 欧美日韩国产免费一区二区三区| 午夜两性免费视频| 青青草国产在线观看| 污污视频在线免费看| 国产精品久久久久永久免费看| 激情网站在线| 97精品视频| 91毛片在线观看| 91麻豆精品国产自产在线观看一区| 久久艳片www.17c.com| 蜜桃日韩视频| 老熟女高潮一区二区三区| 无码人妻精品一区二区| 日本大片在线看黄a∨免费| 黄网页在线观看| 国模精品一区| 91蝌蚪porny九色| 欧美一区二区三区在线看| 国产精品91久久久久久| 亚洲人精品午夜射精日韩| 在线日韩国产网站| 日韩综合另类| 羞羞视频在线观看免费| 欧美午夜精品一区二区三区电影| 成人app下载| 日韩女优av电影| 91久久久久久久久久久| 久久人人爽av| 一级黄色免费看| 日本1区2区3区中文字幕| 9999在线精品视频| 美腿丝袜亚洲三区| 在线免费不卡电影| 国产国语刺激对白av不卡| 久久久久人妻精品一区三寸| 亚洲免费激情视频| av一线二线| 国精品产品一区| 老司机精品视频导航| 欧美精品日韩精品| 成人在线一区二区| 伊人久久久久久久久| 丰满人妻熟女aⅴ一区| 阿v免费在线观看| 97精品中文字幕| 一区二区免费在线播放| 国语自产在线不卡| 黄色一级免费大片| 99久久国产免费| 国产裸舞福利在线视频合集| caoporn超碰国产公开| 偷拍精品精品一区二区三区| 麻豆成人综合网| 精品99久久久久久| 亚洲精品乱码久久久久久蜜桃91| 搜索黄色一级片| 福利视频网址导航| 欧美9999| 国产精品视频观看| 97视频在线免费观看| 亚洲精品一二三四五区| www.精品久久| 色呦呦在线看| 蜜桃传媒麻豆第一区在线观看| 日韩欧美国产电影| 亚洲欧美日韩不卡一区二区三区| 精品72久久久久中文字幕| 一级二级在线观看| 久久亚洲黄色| 欧美激情综合五月色丁香| 久久精品99久久久香蕉| 国产老熟妇精品观看| 88av在线视频| 91社区在线| 免费看亚洲片| 亚洲国产精久久久久久 | 亚洲精品影视在线观看| 法国空姐在线观看免费| 91久久国产综合久久91| 激情小说 在线视频| 精品免费日产一区一区三区免费| 亚洲成熟丰满熟妇高潮xxxxx| 国产午夜无码视频在线观看| 一区二区三区不卡在线视频 | 男人日女人下面视频| 国产剧情久久久| a视频在线观看免费| 午夜在线a亚洲v天堂网2018| 日韩欧美资源站| 中文字幕久久综合| 中文字幕+乱码+中文乱码www| 美女做暖暖视频免费在线观看全部网址91| 亚洲国产一区二区三区在线播放| 老熟妇一区二区三区啪啪| 黄色成人在线免费观看| 黄色片免费观看视频| 有色激情视频免费在线| 欧美1区2区3区| 欧美丰满少妇xxxbbb| 极品日韩久久| 天天操天天摸天天干| 精华区一区二区三区| 亚洲永久网站| 亚洲一区999| 色综合天天色综合| 国产精品冒白浆免费视频| 波多野结衣一区二区三区免费视频| 亚洲天堂网中文字| 99蜜桃在线观看免费视频网站| 国产亚洲欧美日韩在线观看一区二区 | 欧美日韩精品在线播放| 国产乱码精品一区二区三区日韩精品 | 久久精品成人一区二区三区蜜臀 | 久久aimee| 亚洲午夜精品久久久久久久久| av一区二区三区在线观看| 国产性70yerg老太| 麻豆av在线导航| 成人精品视频网站| 国产精品h在线观看| 国产成人av免费在线观看| 蜜桃av噜噜一区二区三区| 天堂网av手机版| 日本资源在线| 久久久一区二区三区捆绑**| 国产美女精彩久久| 国产精品theporn动漫| 八戒八戒神马在线电影| 91麻豆高清视频| 99视频日韩| 99久久精品国产成人一区二区| 国产成人77亚洲精品www| 午夜精品福利一区二区三区av | 国产精品麻豆va在线播放| 欧美日韩中文字幕在线观看| 国产黄色小视频在线| 亚洲国产精品成人综合色在线婷婷 | 国产在线免费看| 成人福利在线| 91香蕉视频污在线| 97欧洲一区二区精品免费| 在线观看中文字幕2021| 伊人久久大香| 欧美视频在线不卡| 玩弄japan白嫩少妇hd| jizz在线播放| 奇米精品一区二区三区在线观看一| 性色av一区二区咪爱| 久草视频中文在线| 日本免费久久| 在线观看区一区二| 男人搞女人网站| 黄色免费看片| 高清不卡一区二区| 狠狠色噜噜狠狠色综合久| 欧美一级视频免费| 精品国产乱码| 精品久久久网站| 99久久人妻无码中文字幕系列| 高清美女视频一区| 国产精品传媒视频| 中国老女人av| www.色五月.com| 激情另类小说区图片区视频区| 国产精品一区二区在线| 国产精品视频一二区| 伊人春色精品| 伊人青青综合网站| 天堂网avav| 国产激情久久| 欧美成人一区二区三区| 人妻体内射精一区二区三区| 在线中文资源天堂| 亚洲一区在线观看免费观看电影高清 | 欧美人成在线视频| 精品91久久久| 国产精品17p| 国产一区二区黑人欧美xxxx| 中文乱码字幕高清一区二区| 自拍一区在线观看| 欧美一区二区三区日韩视频| 在线观看国产网站| 98色花堂精品视频在线观看| 91福利社在线观看| 波多野结衣电影免费观看| 日韩大片在线永久免费观看网站| 亚洲综合色噜噜狠狠| 丁香婷婷激情网| 亚洲一级黄色录像| 香蕉av在线播放| 99久久婷婷这里只有精品| 欧美成人免费va影院高清| 青青国产在线观看| 国产欧美自拍一区| 亚洲一区二区黄| 欧美亚洲天堂网| 卡一精品卡二卡三网站乱码| 日韩一区二区av| 成人小视频在线播放| 美女毛片一区二区三区四区最新中文字幕亚洲| 日韩最新免费不卡| 制服丝袜在线一区| 免费看美女隐私的视频| 成人av网址在线| 欧美日韩中文字幕在线播放| 日本全棵写真视频在线观看| 国产亚洲一区二区三区在线观看 | 精品一区二区三区不卡| 波多野结衣久草一区| 久热中文字幕在线精品首页| 蜜臀99久久精品久久久久久软件| 国产精品区一区| 国内自拍九色| 欧美激情一二三区| 杨幂毛片午夜性生毛片| 美女写真理伦片在线看| 日本高清不卡视频| 波多野结衣 在线| 亚洲欧洲二区| 精品自在线视频| 成人乱码一区二区三区| 爽爽淫人综合网网站| 一本一本a久久| 中文字幕在线免费专区| 国产激情视频在线观看| 亚洲小说欧美激情另类| 日韩精品――色哟哟| 精品捆绑调教一区二区三区| 亚洲成**性毛茸茸| 91精品国产高潮对白| 久久最新网址| 国产欧美一区二区| 青柠在线免费观看| 中文字幕国产精品一区二区| 国产永久免费网站| 欧美一级大黄| 免费av一区二区| 天天操天天操天天操| 久久av中文字幕片| 青青青免费在线| 欧美巨大xxxx做受沙滩| 亚洲人成在线电影| 精品人妻午夜一区二区三区四区 | 婷婷丁香一区二区三区| 精品制服美女丁香| av女优在线播放| 蜜乳av一区| 日韩三级影视基地| 亚洲欧美日韩综合在线| www.爱久久.com| 日韩成人av免费| 国产精品白丝久久av网站| 欧美一区二区三区四区在线| 99久久国产综合精品女小说| 国产精品久久久久久久久免费桃花 | 翔田千里一区二在线观看| 国产99久久久国产精品| 亚洲36d大奶网| 精品欧美不卡一区二区在线观看 | 国产精品无码久久久久久| 欧美影视资讯| 7777精品久久久久久| 色九视频91| 亚洲一区二区综合| 日本爱爱小视频|