色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于CW32L083的AT指令框架

華仔的編程隨筆 ? 來(lái)源:華仔的編程隨筆 ? 作者:華仔的編程隨筆 ? 2023-07-13 08:57 ? 次閱讀

產(chǎn)品很多配置信息需要后期進(jìn)行配置,配置交互最好的方式之一是上位機(jī)通過(guò)串口與開發(fā)板進(jìn)行交互來(lái)完配置。這里我準(zhǔn)備引入AT指令來(lái)進(jìn)行配置。

我采用串口中斷+定時(shí)器中斷來(lái)實(shí)現(xiàn)了串口的接收,下面進(jìn)行AT指令框架的創(chuàng)建。

  1. 首先定義了指令結(jié)構(gòu):
typedef enum{
    AT_CMD_TEST = 0,
    AT_CMD_SETRTC,
    AT_END
}AT_Cmd;

typedef unsigned char (*pFunc)(unsigned char *ptr, unsigned char len);

typedef struct
{
    AT_Cmd cmd;             /* 指令序號(hào) */
    unsigned char *str;     /* 指令內(nèi)容 */
    pFunc cb;               /* 指令執(zhí)行 */
}AT_cmd_func;

/* AT指令表 */
const AT_cmd_func at_cmd_func[] = {
    {AT_CMD_TEST,       "AT",           at_cmd_test},
    {AT_CMD_SETRTC,     "AT+SETRTC=",   at_cmd_setrtc},
    {AT_END,        NULL,           NULL}
};
  1. 我定義了執(zhí)行指令的函數(shù)1個(gè)是AT測(cè)試,再有一條是設(shè)置RTC的指令(具體還沒有實(shí)現(xiàn),只是定義了一條打印指令);
/* 指令執(zhí)行函數(shù) */
unsigned char at_cmd_test(unsigned char *p, unsigned char len){
    AT_DEBUG_INFO("AT+OKrn");
    return 0;
}

unsigned char at_cmd_setrtc(unsigned char *p, unsigned char len){
    AT_DEBUG_INFO("setrtcrn");
    return 0;
}
  1. 最后我們進(jìn)行指令解析,主要有兩個(gè)函數(shù),一個(gè)是檢索指令表里是否存在指令,二個(gè)是解析指令,如果成果測(cè)執(zhí)行相應(yīng)的指令。
/* 查找指令表中對(duì)應(yīng)的指令 */
unsigned char AT_cmd_search(unsigned char *p, unsigned char len)
{
    unsigned char ret = 0;
    unsigned char *pstr;
    unsigned char i, n;
    for(i=1; at_cmd_func[i].cmd != AT_END; i++)
    {
        n = mstrlen(at_cmd_func[i].str);
        if(!mstrncmp(p, at_cmd_func[i].str, n)){
            ret = i;
            break;
        }
    }
    return ret;
}

/* AT指令解析 */
unsigned char at_cmd_parse(unsigned char *p, unsigned char len){
    unsigned char ret = AT_SUCCESS;
    unsigned char index = 0;
    unsigned char n;
    if(len < 4) {
        return AT_ERR;
    }

    if((p[0] == 'A') && (p[1] == 'T') && (p[len-2] == 0x0D) && (p[len-1] == 0x0A)) {
        if(len == 4) { /* 測(cè)試指令 */
            if(at_cmd_func[AT_CMD_TEST].cb != NULL) {
                at_cmd_func[AT_CMD_TEST].cb(NULL, 0); /* 執(zhí)行測(cè)試指令 */
            }
        }else if(p[2] == '+') { /* 執(zhí)行指令解析 */
                index = AT_cmd_search(p, len); /* 查找匹配的執(zhí)行指令, 0-已匹配, !0-未匹配*/
                if(index) {
                    if(at_cmd_func[index].cb != NULL) {
                        n = mstrlen(at_cmd_func[index].str);
                        ret = at_cmd_func[index].cb(p+n, len-n); /* 執(zhí)行對(duì)應(yīng)的指令函數(shù), p+n:將指令參數(shù)傳輸執(zhí)行函數(shù),len-n-2:指令參數(shù)有效長(zhǎng)度 */ 
                    }else {
                        ret = AT_ERR_FUN_UNUSED; /* 沒有可執(zhí)行函數(shù) */
                    }
                }else {
                    ret = AT_ERR_UNINVAL; /* 未找到匹配的指令 */
                }
        }else { /* 格式不匹配 */
            return AT_ERR; 
        }
        return ret;
    }

}

【測(cè)試】

我在接收到指令后執(zhí)行at_cmd_parse 發(fā)送AT、AT+SETRTC=成功的返回需要的信息。

image.png

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 指令
    +關(guān)注

    關(guān)注

    1

    文章

    607

    瀏覽量

    35692
  • 串口
    +關(guān)注

    關(guān)注

    14

    文章

    1551

    瀏覽量

    76421
  • 開發(fā)板
    +關(guān)注

    關(guān)注

    25

    文章

    5032

    瀏覽量

    97371
  • 上位機(jī)
    +關(guān)注

    關(guān)注

    27

    文章

    941

    瀏覽量

    54790
  • CW32
    +關(guān)注

    關(guān)注

    1

    文章

    203

    瀏覽量

    626
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    方案介紹|CW32L010安全低功耗MCU:驅(qū)動(dòng)高速風(fēng)筒新力量

    芯源半導(dǎo)體CW32L010系列MCU可支持低成本、高性能、低功耗、高度集成的高速風(fēng)筒方案,以滿足市場(chǎng)對(duì)高效、安全、智能的高速風(fēng)筒需求。 本文將介紹武漢芯源半導(dǎo)體CW32L010系列單片機(jī)在高速風(fēng)筒
    發(fā)表于 12-10 09:57

    基于CW32L010F8P6的電機(jī)驅(qū)動(dòng)板簡(jiǎn)易測(cè)試

    基于CW32L010F8P6的一款開源電機(jī)驅(qū)動(dòng)板,可驅(qū)動(dòng)無(wú)刷電機(jī)(無(wú)感或有感),直流電機(jī)或步進(jìn)電機(jī)。
    的頭像 發(fā)表于 11-19 09:38 ?308次閱讀
    基于<b class='flag-5'>CW32L</b>010F8P6的電機(jī)驅(qū)動(dòng)板簡(jiǎn)易測(cè)試

    CW32L010 Mini Board 測(cè)評(píng)】簡(jiǎn)介、點(diǎn)燈

    CW32L010 Mini Board 測(cè)評(píng)】簡(jiǎn)介、點(diǎn)燈 CW32L010 Mini Board 是 武漢芯源半導(dǎo)體 設(shè)計(jì)的基于 CW32L010 的開發(fā)板, 簡(jiǎn)介 CW32L01
    發(fā)表于 11-17 06:39

    CW32L010學(xué)習(xí)筆記

    記錄CW32L010學(xué)習(xí)過(guò)程
    的頭像 發(fā)表于 11-15 17:40 ?1533次閱讀
    <b class='flag-5'>CW32L</b>010學(xué)習(xí)筆記

    CW32L010 新品初體驗(yàn)

    最近我們迎來(lái)了CW32L010新品的正式發(fā)布,標(biāo)志著嵌入式技術(shù)領(lǐng)域的又一次創(chuàng)新突破。今日,我們有幸進(jìn)行該新品的首次使用體驗(yàn),以一塊L010核心板為例,體驗(yàn)一下這顆芯片。 一、核心板概覽 如圖所示
    的頭像 發(fā)表于 11-14 17:45 ?330次閱讀
    <b class='flag-5'>CW32L</b>010 新品初體驗(yàn)

    CW32L0100核心板的使用體驗(yàn)

    最近我們迎來(lái)了CW32L010新品的正式發(fā)布,標(biāo)志著嵌入式技術(shù)領(lǐng)域的又一次創(chuàng)新突破。今日,我們有幸進(jìn)行該新品的首次使用體驗(yàn),以一塊L010核心板為例,體驗(yàn)一下這顆芯片。
    的頭像 發(fā)表于 10-30 15:29 ?254次閱讀
    <b class='flag-5'>CW32L</b>0100核心板的使用體驗(yàn)

    CW32L010安全低功耗MCU,樹立M0+產(chǎn)品行業(yè)新標(biāo)桿!

    2024年9月26日,武漢芯源半導(dǎo)體CW32L010系列產(chǎn)品正式官方發(fā)布。這款產(chǎn)品以其卓越的產(chǎn)品性能,迅速在業(yè)界引起了廣泛關(guān)注,并成功樹立M0+產(chǎn)品行業(yè)的新標(biāo)桿。CW32L010系列產(chǎn)品
    的頭像 發(fā)表于 10-09 10:12 ?508次閱讀
    <b class='flag-5'>CW32L</b>010安全低功耗MCU,樹立M0+產(chǎn)品行業(yè)新標(biāo)桿!

    CW32L010安全低功耗MCU,樹立M0+產(chǎn)品行業(yè)新標(biāo)桿!

    CW32L010系列產(chǎn)品可以阻止這個(gè)入侵,我們?cè)试S用戶劃定一塊指令存儲(chǔ)區(qū)域,只能通過(guò)指令總線取指令執(zhí)行,不允許通過(guò)數(shù)據(jù)總線訪問(wèn)數(shù)據(jù)。在這個(gè)區(qū)域內(nèi),即使攻擊者嘗試通過(guò)下載間諜程序挾持
    發(fā)表于 10-09 10:08

    CW32L083 IAP跳轉(zhuǎn)后中斷無(wú)響應(yīng)是怎么回事?

    最近做一個(gè)項(xiàng)目,需要IAP。按照官方的教程一切順利,軟件APP跳轉(zhuǎn)一切正常,但是跳轉(zhuǎn)后中斷沒有響應(yīng)。搜索了一堆資料,APP在mian中找開了中斷,在不同地方設(shè)置VROT,都沒能解決,查了數(shù)據(jù)手冊(cè),也只說(shuō)支持向量偏移,沒有其它介紹。請(qǐng)問(wèn)哪位大神做過(guò)IAP中斷處理的,指點(diǎn)一下,是不是還需要設(shè)置哪里。我用仿真器測(cè)試,只要是帶中斷的,跳轉(zhuǎn)后,中斷全部無(wú)響應(yīng)。
    發(fā)表于 07-26 07:17

    請(qǐng)問(wèn)STM32L083的唯一ID為什么有重復(fù)啊?

    ID的讀取代碼如下: for(i=0; i<3; i++) {//STM32L083 ID CODE STM32L083_ID[i] = *(uint32_t
    發(fā)表于 04-17 06:29

    CW32L052 FLASH存儲(chǔ)器

    CW32L052內(nèi)部集成了64KB嵌入式FLASH供用戶使用,可用來(lái)存儲(chǔ)應(yīng)用程序和用戶數(shù)據(jù)。芯片支持對(duì) FLASH 存儲(chǔ)器的讀、擦除和寫操作,支持擦寫保護(hù)和讀保護(hù)。芯片內(nèi)置 FLASH 編程所需的高壓 BOOST 電路,無(wú)須額外提供編程電壓。
    的頭像 發(fā)表于 02-28 17:43 ?726次閱讀
    <b class='flag-5'>CW32L</b>052 FLASH存儲(chǔ)器

    CW32L052單片機(jī)支持DMA實(shí)現(xiàn)高速數(shù)據(jù)傳輸

    CW32L052支持DMA(Direct Memory Access),即直接內(nèi)存訪問(wèn),無(wú)需CPU干預(yù),實(shí)現(xiàn)高速數(shù)據(jù)傳輸。
    的頭像 發(fā)表于 02-27 11:36 ?971次閱讀

    請(qǐng)問(wèn)如何優(yōu)化CW32L083微控制器的功耗?

    在進(jìn)行低功耗設(shè)計(jì)時(shí),如何優(yōu)化CW32L083系列微控制器的功耗?
    發(fā)表于 01-17 07:16

    CW32L083系列微控制器的ADC和DAC模塊要如何使用?怎么配置?

    如何配置和使用CW32L083系列微控制器的ADC和DAC模塊?
    發(fā)表于 01-17 06:08

    基于CW32W031射頻芯片的AT指令無(wú)線串口模塊

    1.模塊介紹 1.1實(shí)物圖片 外接天線 模塊正面 1.2模塊概述 該模塊是基于武漢芯源半導(dǎo)體 CW32W031 射頻芯片研發(fā)的AT 指令無(wú)線串口模塊。可使用串口進(jìn)行數(shù)據(jù)收發(fā),降低無(wú)線應(yīng)用門檻;可配
    的頭像 發(fā)表于 12-28 11:57 ?1570次閱讀
    基于<b class='flag-5'>CW</b>32W031射頻芯片的AT<b class='flag-5'>指令</b>無(wú)線串口模塊
    主站蜘蛛池模板: 长泽梓黑人初解禁bdd07| 亚洲高清在线视频| 国产在线精品视频资源| 97成人在线| 亚洲 在线 日韩 欧美| 欧美日韩中文字幕综合图区| 国产人妻精品午夜福利免费不卡| 中文字幕在线永久| 亚洲AV中文字幕无码久久| 男人J进入女人P免费狂躁| 蝴蝶中文娱乐| 国产不卡视频在线观看| 3d无遮挡h肉动漫在线播放| 亚洲精品白色在线发布| 日日碰狠狠躁久久躁综合网| 麻花传媒MD0044视频| 狠狠干.in| 国产精品无码中文在线AV| no视频在线观看| 最近最新中文字幕MV高清在线| 亚洲精品成人a在线观看| 四虎影视国产精品亚洲精品hd| 欧美九十老太另类| 麻豆国产精品va在线观看约| 久99久热只有精品国产99| 国产午夜不卡在线观看视频666| 超碰免费视频caoporn| 99久久99久久久精品齐齐鬼色 | 亚洲欧洲日韩天堂无吗| 偷拍精品视频一区二区三区| 青青草原影视| 拍戏被CAO翻了H| 欧美激情精品久久久久久不卡| 久久综合色视频| 久久视频这只精品99re6| 女同志videos最新另| 国产亚洲一区二区三区啪| brazzers巨臀系列| 亚洲欧美一区二区久久| 日韩高清毛片| 毛片免费在线播放|