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

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指令框架

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

掃碼添加小助手

加入工程師交流群

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

我采用串口中斷+定時(shí)器中斷來實(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測試,再有一條是設(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è)是解析指令,如果成果測執(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) { /* 測試指令 */
            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í)行對(duì)應(yīng)的指令函數(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

審核編輯:湯梓紅

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

    關(guān)注

    1

    文章

    617

    瀏覽量

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

    關(guān)注

    15

    文章

    1607

    瀏覽量

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

    關(guān)注

    25

    文章

    6134

    瀏覽量

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

    關(guān)注

    27

    文章

    994

    瀏覽量

    56723
  • CW32
    +關(guān)注

    關(guān)注

    1

    文章

    281

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    在使用CW32L083系列微控制器時(shí)如何進(jìn)行系統(tǒng)復(fù)位和看門狗定時(shí)器配置?

    在使用CW32L083系列微控制器時(shí),如何進(jìn)行系統(tǒng)復(fù)位和看門狗定時(shí)器配置?
    發(fā)表于 12-10 06:46

    CW32L083的內(nèi)置獨(dú)立校準(zhǔn)的RTC這一般怎么玩?

    CW32L083的內(nèi)置獨(dú)立校準(zhǔn)的RTC這一般怎么玩?
    發(fā)表于 12-09 07:04

    CW32L083系列微控制器有哪些主要特點(diǎn)?

    CW32L083系列微控制器有哪些主要特點(diǎn)
    發(fā)表于 12-09 06:34

    CW32單片機(jī)在智能馬桶的應(yīng)用

    電池的使用壽命。例如,降低加熱功率或減少?zèng)_洗時(shí)間等,通過智能的電量管理,實(shí)現(xiàn)了對(duì)電能的高效利用和節(jié)約。 這款智能馬桶采用的是武漢芯源半導(dǎo)體32位低功耗CW32L083系列,該系列產(chǎn)品集成了主頻高達(dá)
    發(fā)表于 12-04 08:01

    請(qǐng)問一下,CW32L083VCT6的DeepSleep模式下,功耗一般在多少?

    請(qǐng)問一下,CW32L083VCT6的DeepSleep模式下,功耗一般在多少?
    發(fā)表于 12-03 06:14

    CW32定時(shí)器及中斷介紹

    CW32L083為例,其定時(shí)器分為6種: 基本定時(shí)器:CW32L083 內(nèi)部集成 3 個(gè)基本定時(shí)器 (BTIM),每個(gè) BTIM 完全獨(dú)立且功能完全相同,各包含一個(gè) 16bit 自動(dòng)重裝
    發(fā)表于 12-01 07:08

    GCC開發(fā)工程的模版

    1、拷貝一份工程,另存為cw32l083_gcc,并用vscode打開。 2、到官網(wǎng)下載cw32l083的固件庫。 3、把cw32l083-stdperiph-lib/Libraries下面的固件
    發(fā)表于 11-28 08:15

    CW32L010的串口輸出

    CW32L010是一款集成了豐富功能的低功耗微控制器,其串口輸出功能是通過其內(nèi)部的通用異步收發(fā)器(UART)實(shí)現(xiàn)的。 一、串口硬件資源 CW32L010提供了二路低功耗UART,這些UART接口支持
    發(fā)表于 11-27 07:27

    CW32L083有哪些應(yīng)用場景?

    CW32L083有哪些應(yīng)用場景
    發(fā)表于 11-24 07:37

    pwm關(guān)閉后,有雜波怎么解決?

    使用cw32l083的芯片,用GTIM3-CH3,PA11輸出38K的pwm發(fā)送紅外信號(hào),使能定時(shí)器后,即使占空比設(shè)為0,也會(huì)輸出雜波,或者關(guān)閉定時(shí)器,也會(huì)有雜波,大概要怎么配置呢?
    發(fā)表于 11-24 07:08

    CW32單片機(jī)UART低功耗模式的介紹

    ,往往是靠電池來供電,所以設(shè)計(jì)人員從每一個(gè)細(xì)節(jié)來考慮降低功率消耗,從而盡可能地延長電池使用時(shí)間。因此,大部分芯片都會(huì)有低功耗模式,以CW32L083為例,它就是一個(gè)32位低功耗微控制器。 一、芯片模式
    發(fā)表于 11-19 06:08

    CW32 UART低功耗模式詳解

    ,往往是靠電池來供電,所以設(shè)計(jì)人員從每一個(gè)細(xì)節(jié)來考慮降低功率消耗,從而盡可能地延長電池使用時(shí)間。因此,大部分芯片都會(huì)有低功耗模式,以CW32L083為例,它就是一個(gè)32位低功耗微控制器。 一、芯片模式
    發(fā)表于 11-12 07:24

    CW32 MCU的工作電壓、工作溫度是多少?

    32F003、CW32F002等,其工作溫度為-40℃~105℃,其余系列,比如:CW32L083、CW32L031等低功耗系列,以及CW32R、C
    發(fā)表于 11-12 06:49

    CW32 MCU最低功耗能做到多少?

    CW32L系列,比如:CW32L083、CW32L031在深度休眠模式下,電流可低至600nA以下,CW32L010則可低至0.3uA;其它系列,比如:
    發(fā)表于 11-12 06:24

    CW32L011口袋電源開箱測評(píng)

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