chinese直男口爆体育生外卖, 99久久er热在这里只有精品99, 又色又爽又黄18禁美女裸身无遮挡, gogogo高清免费观看日本电视,私密按摩师高清版在线,人妻视频毛茸茸,91论坛 兴趣闲谈,欧美 亚洲 精品 8区,国产精品久久久久精品免费

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

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

3天內不再提示

基于CW32L083的AT指令框架

華仔的編程隨筆 ? 來源:華仔的編程隨筆 ? 作者:華仔的編程隨筆 ? 2023-07-13 08:57 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

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

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

  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;               /* 指令執(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個是AT測試,再有一條是設置RTC的指令(具體還沒有實現(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. 最后我們進行指令解析,主要有兩個函數(shù),一個是檢索指令表里是否存在指令,二個是解析指令,如果成果測執(zhí)行相應的指令。
/* 查找指令表中對應的指令 */
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); /* 執(zhí)行測試指令 */
            }
        }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í)行對應的指令函數(shù), p+n:將指令參數(shù)傳輸執(zhí)行函數(shù),len-n-2:指令參數(shù)有效長度 */ 
                    }else {
                        ret = AT_ERR_FUN_UNUSED; /* 沒有可執(zhí)行函數(shù) */
                    }
                }else {
                    ret = AT_ERR_UNINVAL; /* 未找到匹配的指令 */
                }
        }else { /* 格式不匹配 */
            return AT_ERR; 
        }
        return ret;
    }

}

【測試】

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

image.png

審核編輯:湯梓紅

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

    關注

    1

    文章

    617

    瀏覽量

    37157
  • 串口
    +關注

    關注

    15

    文章

    1596

    瀏覽量

    81374
  • 開發(fā)板
    +關注

    關注

    25

    文章

    5999

    瀏覽量

    110052
  • 上位機
    +關注

    關注

    27

    文章

    989

    瀏覽量

    56438
  • CW32
    +關注

    關注

    1

    文章

    278

    瀏覽量

    1543
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    CW32L01x系列MCU驅動TFT屏的應用方案

    CW32L01x系列MCU應用廣泛,本文將詳細介紹CW32L01x系列MCU驅動TFT屏的應用方案。我們以CW32L010系列MCU為例來介紹一下硬件連接要點和軟件驅動關鍵步驟。
    的頭像 發(fā)表于 10-14 10:18 ?258次閱讀
    <b class='flag-5'>CW32L</b>01x系列MCU驅動TFT屏的應用方案

    CW32】uart_obj_fw 輕量級串口框架

    以下文章內容由CW32生態(tài)社區(qū)用戶提供: https://gitee.com/teletubbies-die-of-murder/lightweight-serial-framework 介紹
    的頭像 發(fā)表于 09-29 18:02 ?7199次閱讀

    CW32L011 電機驅動器開發(fā)板測試

    非常感謝CW32生態(tài)社區(qū)提供的CW32L011電機驅動器,下面是對該電機驅動器的分析和測試。 電機驅動器外觀 電機驅動器內部 原理圖 下載器連接 電源和電機線連接 注意:電源線不可接反 安裝固件
    的頭像 發(fā)表于 08-30 10:31 ?407次閱讀
    <b class='flag-5'>CW32L</b>011 電機驅動器開發(fā)板測試

    CW32L011口袋電源開箱測評

    CW32L011口袋電源開箱測評
    的頭像 發(fā)表于 08-25 17:06 ?509次閱讀
    <b class='flag-5'>CW32L</b>011口袋電源開箱測評

    CW32L011電機驅動開發(fā)板——驅動無刷電機

    CW32L011電機驅動開發(fā)板
    的頭像 發(fā)表于 08-22 10:02 ?565次閱讀
    <b class='flag-5'>CW32L</b>011電機驅動開發(fā)板——驅動無刷電機

    CW32L011電機驅動控制開發(fā)板-軟件

    CW32L011電機驅動控制開發(fā)板-軟件分析 銜接上一個硬件
    的頭像 發(fā)表于 08-13 10:44 ?600次閱讀
    <b class='flag-5'>CW32L</b>011電機驅動控制開發(fā)板-軟件

    CW32L011電機驅動電機控制開發(fā)板-硬件1

    CW32L011電機驅動電機控制開發(fā)板-硬件介紹 后面有軟件分析
    的頭像 發(fā)表于 08-12 14:20 ?3397次閱讀
    <b class='flag-5'>CW32L</b>011電機驅動電機控制開發(fā)板-硬件1

    基于CW32L010的高性能溫控器方案

    武漢芯源半導體的明星產品CW32L010系列MCU憑借其ARM Cortex-M0+內核、超低功耗特性以及豐富的外設接口,為溫控器設計提供了理想的解決方案。 本文將介紹無錫梓軒電子基于武漢芯源半導體低功耗CW32L010單片機開發(fā)的溫控器方案,功能全面,性價比突出。
    的頭像 發(fā)表于 07-02 09:47 ?777次閱讀
    基于<b class='flag-5'>CW32L</b>010的高性能溫控器方案

    基于CW32L010的高性能溫控器方案

    溫控器作為環(huán)境控制系統(tǒng)中的核心設備,廣泛應用于工業(yè)自動化、智能家居、農業(yè)溫室等諸多領域,正朝著智能化、精準化和低功耗方向發(fā)展。武漢芯源半導體的明星產品CW32L010系列MCU憑借其ARM
    發(fā)表于 07-02 09:46

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

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

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

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

    CW32L010 Mini Board 測評】簡介、點燈

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

    CW32L010學習筆記

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

    CW32L010 新品初體驗

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

    CW32L0100核心板的使用體驗

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