在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

基于CW32L083的AT指令框架

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

產品很多配置信息需要后期進行配置,配置交互最好的方式之一是上位機通過串口與開發板進行交互來完配置。這里我準備引入AT指令來進行配置。

我采用串口中斷+定時器中斷來實現了串口的接收,下面進行AT指令框架的創建。

  1. 首先定義了指令結構:
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;             /* 指令序號 */
    unsigned char *str;     /* 指令內容 */
    pFunc cb;               /* 指令執行 */
}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. 我定義了執行指令的函數1個是AT測試,再有一條是設置RTC的指令(具體還沒有實現,只是定義了一條打印指令);
/* 指令執行函數 */
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. 最后我們進行指令解析,主要有兩個函數,一個是檢索指令表里是否存在指令,二個是解析指令,如果成果測執行相應的指令。
/* 查找指令表中對應的指令 */
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) { /* 測試指令 */
            if(at_cmd_func[AT_CMD_TEST].cb != NULL) {
                at_cmd_func[AT_CMD_TEST].cb(NULL, 0); /* 執行測試指令 */
            }
        }else if(p[2] == '+') { /* 執行指令解析 */
                index = AT_cmd_search(p, len); /* 查找匹配的執行指令, 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); /* 執行對應的指令函數, p+n:將指令參數傳輸執行函數,len-n-2:指令參數有效長度 */ 
                    }else {
                        ret = AT_ERR_FUN_UNUSED; /* 沒有可執行函數 */
                    }
                }else {
                    ret = AT_ERR_UNINVAL; /* 未找到匹配的指令 */
                }
        }else { /* 格式不匹配 */
            return AT_ERR; 
        }
        return ret;
    }

}

【測試】

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

image.png

審核編輯:湯梓紅

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 指令
    +關注

    關注

    1

    文章

    611

    瀏覽量

    35841
  • 串口
    +關注

    關注

    14

    文章

    1559

    瀏覽量

    77137
  • 開發板
    +關注

    關注

    25

    文章

    5126

    瀏覽量

    98320
  • 上位機
    +關注

    關注

    27

    文章

    945

    瀏覽量

    55034
  • CW32
    +關注

    關注

    1

    文章

    218

    瀏覽量

    747
收藏 人收藏

    評論

    相關推薦

    24CW16X/24CW32X/24CW64X/24CW128X系列數據手冊

    電子發燒友網站提供《24CW16X/24CW32X/24CW64X/24CW128X系列數據手冊.pdf》資料免費下載
    發表于 01-22 16:08 ?0次下載
    24<b class='flag-5'>CW</b>16X/24<b class='flag-5'>CW</b>32X/24<b class='flag-5'>CW</b>64X/24<b class='flag-5'>CW</b>128X系列數據手冊

    CW32L010 Motor Control Driver無刷電機驅動板上手體驗

    CW32L010無刷電機驅動開發板上手體驗
    的頭像 發表于 12-26 09:26 ?319次閱讀
    <b class='flag-5'>CW32L</b>010 Motor Control Driver無刷電機驅動板上手體驗

    CW32L010demo

    硬件原理圖:主芯片 引腳封裝圖: CW32L010 是基于 eFlash 的單芯片低功耗微控制器,集成了主頻高達 48MHz 的 ARM? Cortex?-M0+ 內核、高速嵌入式存儲器(多至
    發表于 12-25 17:41

    方案介紹|CW32L010安全低功耗MCU:驅動高速風筒新力量

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

    基于CW32L010F8P6的電機驅動板簡易測試

    基于CW32L010F8P6的一款開源電機驅動板,可驅動無刷電機(無感或有感),直流電機或步進電機。
    的頭像 發表于 11-19 09:38 ?460次閱讀
    基于<b class='flag-5'>CW32L</b>010F8P6的電機驅動板簡易測試

    CW32L010 Mini Board 測評】簡介、點燈

    CW32L010 Mini Board 測評】簡介、點燈 CW32L010 Mini Board 是 武漢芯源半導體 設計的基于 CW32L010 的開發板, 簡介 CW32L01
    發表于 11-17 06:39

    CW32L010學習筆記

    記錄CW32L010學習過程
    的頭像 發表于 11-15 17:40 ?2201次閱讀
    <b class='flag-5'>CW32L</b>010學習筆記

    CW32L010 新品初體驗

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

    CW32L0100核心板的使用體驗

    最近我們迎來了CW32L010新品的正式發布,標志著嵌入式技術領域的又一次創新突破。今日,我們有幸進行該新品的首次使用體驗,以一塊L010核心板為例,體驗一下這顆芯片。
    的頭像 發表于 10-30 15:29 ?342次閱讀
    <b class='flag-5'>CW32L</b>0100核心板的使用體驗

    CW32L010安全低功耗MCU,樹立M0+產品行業新標桿!

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

    CW32L010安全低功耗MCU,樹立M0+產品行業新標桿!

    。 CW32L010系列產品可以阻止這個入侵,我們允許用戶劃定一塊指令存儲區域,只能通過指令總線取指令執行,不允許通過數據總線訪問數據。在這個區域內,即使攻擊者嘗試通過下載間諜程序挾持
    發表于 10-09 10:08

    CW32L083 IAP跳轉后中斷無響應是怎么回事?

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

    請問STM32L083的唯一ID為什么有重復?。?/a>

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

    CW32L052 FLASH存儲器

    CW32L052內部集成了64KB嵌入式FLASH供用戶使用,可用來存儲應用程序和用戶數據。芯片支持對 FLASH 存儲器的讀、擦除和寫操作,支持擦寫保護和讀保護。芯片內置 FLASH 編程所需的高壓 BOOST 電路,無須額外提供編程電壓。
    的頭像 發表于 02-28 17:43 ?787次閱讀
    <b class='flag-5'>CW32L</b>052 FLASH存儲器

    CW32L052單片機支持DMA實現高速數據傳輸

    CW32L052支持DMA(Direct Memory Access),即直接內存訪問,無需CPU干預,實現高速數據傳輸。
    的頭像 發表于 02-27 11:36 ?1053次閱讀
    主站蜘蛛池模板: 97视频碰碰车 | 老汉色视频 | 免费的日本网站 | 国产午夜小视频 | 欧美色视频在线观看 | 免费网站成人亚洲 | www.射| 日本一区二区三区在线网 | 亚洲天堂ww | 免费特黄视频 | 久久这里精品青草免费 | 国产小视频在线免费 | 免费视频你懂得 | 性夜影院午夜看片 | 国久久| 免费看国产黄色片 | 欧美成人一区亚洲一区 | 免费在线观看黄色 | 狠狠色狠狠色综合网 | 国产色视频一区 | 真爽~张开腿~让我插 | 久久婷婷色一区二区三区 | 丁香午夜婷婷 | 天天摸天天做天天爽天天弄 | 色多多www视频在线观看免费 | 亚洲天堂爱爱 | 午夜在线观看视频 | 毛片福利 | 欧美一级在线观看 | 国产手机看片 | 在线天堂中文在线网 | 久草免费在线播放 | 高清在线免费观看 | 婷婷色爱区综合五月激情韩国 | 天天躁日日躁狠狠躁中文字幕老牛 | 久久久久88色偷偷免费 | 久久视频精品36线视频在线观看 | 稀缺资源呦视频在线网站 | 中文在线 | 中文 | 天天爽夜夜爽人人爽 | 久青草视频在线播放 |