国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

STM32F103 4G Cat.1模塊EC200S使用

這篇具有很好參考價值的文章主要介紹了STM32F103 4G Cat.1模塊EC200S使用。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、簡介

EC200S-CN 是移遠通信最近推出的 LTE Cat 1 無線通信模塊,支持最大下行速率 10Mbps 和最大上行速率 5Mbps,具有超高的性價比;同時在封裝上兼容移遠通信多網(wǎng)絡(luò)制式 LTE Standard EC2x(EC25、EC21、EC20 R2.0、EC20 R2.1)和 EC200T/EG25-G/EG21-G 模塊以及 UMTS/HSPA+ UC20/UC200T 模塊,實現(xiàn)了 3G 網(wǎng)絡(luò)與 4G 網(wǎng)絡(luò)之間的無縫切換。EC200S-CN 還支持標(biāo)準(zhǔn)的 Mini PCIe 封裝,以滿足不同行業(yè)產(chǎn)品應(yīng)用需求。

Quectel EC2x 模塊具有嵌入式 TCP/IP堆棧,使主機可以通過 AT 命令直接上網(wǎng)??梢詫崿F(xiàn)TCP客戶端、UDP客戶端、TCP服務(wù)器和UDP服務(wù)器。

二、AT指令

2.1 AT

測試AT指令功能是否正常,等待模塊返回 OK。

AT

OK

2.2 AT + CPIN?

查詢 SIM 卡狀態(tài),返回 READY 則表示SIM卡正常,如果 20 秒后還無法識別 SIM 卡,重新啟動模塊。

AT+CPIN?

+CPIN: READY

OK

2.3 AT + CREG?

查詢模組是否注冊上GSM網(wǎng)絡(luò),如果 90秒后未能在 CS 上注冊域名服務(wù),重新啟動模塊。
如果返回 1 或 5 ,代表 CS 服務(wù)注冊成功。
+CREG:0,1 表示已注冊上本地網(wǎng),+CREG:0,5表示注冊上漫游網(wǎng)。

AT+CREG?

+CREG: 0,1

OK

2.4 AT + CGREG?

查詢模組是否注冊上GPRS網(wǎng)絡(luò),+CGREG:0,1 表示已注冊上本地網(wǎng),+CGREG:0,5表示注冊上漫游網(wǎng)。

AT+CGREG?

+CGREG: 0,1

OK

2.5 AT + QICSGP=1,1,“CMNET”

該命令可用于配置<APN>,<username>,<password>等TCP / IP上下文參數(shù)。QoS設(shè)置可以由AT + CGQMIN,AT + CGEQMIN,AT + CGQREQ和AT + CGEQREQ配置 。

  • AT+QICSGP=?:查詢命令參數(shù)。
  • AT+QICSGP=<contextID>:查詢 contextID的配置信息。
  • AT+QICSGP=<contextID>[,<context_type>,<APN>[,<username>,<password>)[,<authentication>]]]:配置 contextID信息。
    • <contextID>:整數(shù)類型。上下文ID。范圍是1-16。
    • <context_type>:整數(shù)類型。協(xié)議類型。1(IPV4)、2(IPV4V6)。
    • <APN>:字符串類型。接入點名稱。移動CMNET,聯(lián)通UNINET
    • <username>:字符串類型。用戶名。
    • <password>:字符串類型。密碼。
    • <authentication>:整數(shù)類型。身份驗證方法。0(沒有)、1(PAP)、2(CHAP)、3(PAP或CHAP)。
    • 返回信息:OK 或 ERROR。
AT+QICSGP=1,1,\"CMNET\",\"\",\"\",1

OK

2.6 AT + QIDEACT=1

在激活GPRS場景之前先關(guān)閉GPRS場景,確保連接正確

AT+QIDEACT=1

OK

2.7 AT + QIACT=1

激活移動場景

AT+QIACT=1

OK

2.8 AT+QIOPEN

該命令用于打開套接字服務(wù)。

  • AT+QIOPEN=?:查詢命令參數(shù)。
  • AT+QIOPEN=<contextID>,<connectID>,<service_type>,<IP_address>/<domain_name>,<remote_port>[,<local_po CONNECTrt>[,<access_mode>]] :打開 Socket 服務(wù)。
    • <contextID> :整數(shù)類型。上下文ID。范圍是1-16。
    • <connectID> :整數(shù)類型。套接字服務(wù)索引。范圍是0-11。
    • <SERVICE_TYPE>:字符串類型。套接字服務(wù)類型。
      • “ TCP ” :作為客戶端啟動TCP連接
      • “ UDP ”:作為客戶端啟動UDP連接
      • “TCP LISTENER” :啟動TCP服務(wù)器以偵聽TCP連接
      • “UDP SERVICE” :啟動UDP服務(wù)
    • <IP_address>:字符串類型。
      • 如果<service_type>是TCP或UDP ,則表示遠程服務(wù)器的IP地址,例如 “220.180.239.212”。
      • 如果<service_type>是TCP LISTENER或UDP SERVICE 地址,請輸入“127.0.0.1”。
    • <domain_name>:字符串類型。遠程服務(wù)器的域名地址。
    • <remote_port> :遠程服務(wù)器的端口,僅在<service_type>為“TCP”或“UDP”時有效。范圍是0-65535。
    • <LOCAL_PORT> :本地端口。范圍是0-65535。
      • 如果<service_type>是“TCP LISTENER”或“UDP SERVICE”,則此參數(shù)必須指定。
      • 如果<service_type>是“TCP”或“UDP”。如果<local_port>為0,那么本地端口將是自動分配。否則,將按指定分配本地端口。
    • <access_mode> :整數(shù)類型。套接字服務(wù)的數(shù)據(jù)訪問模式。
      • 0: 緩沖區(qū)訪問模式
      • 1:直推模式
      • 2:透明訪問模式
    • <err>:整數(shù)類型。操作的錯誤代碼。請參閱第4章。
AT+QIOPEN=1,0,\"TCP\",\"180.97.81.180\",53540,0,1

OK

+QIOPEN: 0,0

Buffer模式,Push模式,透傳模式。通過參數(shù)<access_mode>進行配置。

2.9 AT + QISEND

如果指定套接字服務(wù)的<access_mode>是緩沖區(qū)訪問模式或直接推送模式,則數(shù)據(jù)可以是通過AT + QISEND發(fā)送。如果數(shù)據(jù)成功發(fā)送到模塊,將返回“ SEND OK ” 。否則它將返回“ SEND FAIL ” 或“ ERROR ” ?!?SEND FAIL ” 表示發(fā)送緩沖區(qū)已滿客戶可以嘗試重新發(fā)送數(shù)據(jù)?!癊RROR”表示在發(fā)送過程中遇到錯誤 數(shù)據(jù)??蛻魬?yīng)該延遲一段時間來發(fā)送數(shù)據(jù)。最大數(shù)據(jù)長度為1460字?!癝END OK”并不意味著數(shù)據(jù)已成功發(fā)送到服務(wù)器。客戶可以查詢數(shù)據(jù)是否通過AT + QISEND = <connectID>,0命令到達服務(wù)器。透傳模式下不需要AT指令發(fā)送數(shù)據(jù)

三、TCP/IP AT命令撥號流程

四、復(fù)位模塊

RESET_N 引腳可用于使模塊復(fù)位。拉低 RESET_N 引腳至少 300 ms 后釋放可使模塊復(fù)位。RESET_N
信號對干擾比較敏感,因此建議在模塊接口板上的走線應(yīng)盡量的短,且需包地處理。文章來源地址http://www.zghlxwxcb.cn/news/detail-681282.html

五、移植文件

5.1 board_ec200s.c

/*********************************************************************
 * INCLUDES
 */
#include "stdlib.h"
#include "string.h"
#include "stm32f10x.h"
#include "FreeRTOS.h"
#include "task.h" 

#include "board_ec200s.h" 

uint8_t sendCmd(char *pCmd, char *pRes, uint32_t timeOut, uint8_t sendNum);
void clearBuffer(void);
void reset(void);

/*********************************************************************
 * GLOBAL VARIABLES
 */  
uint8_t g_usart2RecvFinish = 0;                                                 // 串口2接收標(biāo)志串口接收完成標(biāo)志
char g_ec200sBuf[1024] = {0};                                                   // 接收緩存
uint32_t g_ec200sCnt = 0;                                                       // 接收計數(shù)                               

/*********************************************************************
 * PUBLIC FUNCTIONS
 */
/**
 @brief 初始化
 @param 無
 @return 1 - 成功;0 - 失敗
*/
uint8_t EC200S_Init(void)
{       
    printf("EC200S_Init\r\n");
    uint8_t result = 0;
    uint8_t step = 0;
    switch(step)
    {
        case 0:
            if(sendCmd("AT\r\n","OK", 10, 5))                                   // 測試AT指令功能是否正常
            {
                step++;
            }
            else
            {
                printf("Err:AT\r\n");
                reset();
                break;
            } 
        case 1:
            if(sendCmd("AT+CPIN?\r\n","+CPIN: READY", 20, 2))                   // 查詢SIM卡是否正常,返回ready則表示SIM卡正常
            {
                step++;
            }
            else
            {
                printf("Err:AT+CPIN?\r\n");                                     // 20秒內(nèi),無法識別SIM狀態(tài),重啟模塊
                reset();
                break;
            }
        case 2:
            if(sendCmd("AT+CREG?\r\n","+CREG: 0,1", 90, 2))                     // 查詢模組是否注冊上GSM網(wǎng)絡(luò)
            {
                step++;                                     
            }
            else
            {
                printf("Err:AT+CREG?\r\n");                                     // 90秒內(nèi),沒有注冊上CS業(yè)務(wù),重啟模塊 
                reset();
                break;
            }
        case 3:
            if(sendCmd("AT+CGREG?\r\n","+CGREG: 0,1", 60, 2))                   // 查詢模組是否注冊上GPRS網(wǎng)絡(luò)
            {
                step++;                                                 
            }
            else
            {
                printf("Err:AT+CGREG?\r\n");                                    // 60秒內(nèi),沒有注冊上PS業(yè)務(wù)
                reset();        
                break;
            }
        case 4:
            if(sendCmd("AT+QICSGP=1,1,\"CMNET\",\"\",\"\",1\r\n", "OK", 40, 3)) // 查詢模組是否注冊上GPRS網(wǎng)絡(luò)
            {
                result = EC200S_NetConfig();                          
            }
            else
            {
                printf("Err:AT+QICSGP=1,1\r\n");                                // 如果3次都沒停止成功或超過40秒沒有回應(yīng),則重啟模塊
                reset();
                break;
            }
    }
    return result;
}

/**
 @brief 網(wǎng)絡(luò)配置
 @param 無
 @return 無
*/
void EC200S_GpioConfig(void)
{
    GPIO_InitTypeDef gpioInitStructure;     
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);                       // 使能GPIO
    gpioInitStructure.GPIO_Pin = GPIO_Pin_8;                                    // 選擇要初始化的GPIOB引腳PB8
    gpioInitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                             // 設(shè)置引腳工作模式為通用推挽輸出      
    gpioInitStructure.GPIO_Speed = GPIO_Speed_50MHz;                            // 設(shè)置引腳輸出最大速率為50MHz
    GPIO_Init(GPIOB, &gpioInitStructure);       
}

/**
 @brief 網(wǎng)絡(luò)配置
 @param 無
 @return 1 - 成功;0 - 失敗
*/
uint8_t EC200S_NetConfig(void)
{      
    uint8_t result = 0;
    if(sendCmd("AT+QIDEACT=1\r\n", "OK", 40, 1))                                // 在激活GPRS場景之前先關(guān)閉GPRS場景,確保連接正確
    {
        if(sendCmd("AT+QIACT=1\r\n", "OK", 150, 1))                              // 激活移動場景
        {
            EC200S_Connect();
        } 
        else                                                                    // 等待150秒后,沒有響應(yīng)重啟模塊
        {
            printf("Err:AT+QIACT=1\r\n");                                       // 重啟模塊
            reset();
        }
    }      
    else                                                                        // 等待40秒后,沒有響應(yīng)重啟模塊
    {
        printf("Err:AT+QIDEACT=1\r\n");                                         // 重啟模塊
        reset();
    }     
}

/**
 @brief 連接TCP服務(wù)器
 @param 無
 @return 無
*/
void EC200S_Connect(void)
{
    if(sendCmd("AT+QIOPEN=1,0,\"TCP\",\"180.97.81.180\",53540,0,1\r\n", "+QIOPEN:", 150, 5))    
    {
        printf("Connect Success\r\n");
    }      
    else
    {
        printf("Err:AT+QIOPEN=1,0\r\n");
    }       
}

/**
 @brief 發(fā)送數(shù)據(jù)到TCP服務(wù)器
 @param pString -[in] 發(fā)送數(shù)據(jù)
 @return 無
*/
void EC200S_Send(char *pString)
{
    if(sendCmd("AT+QISEND=0\r\n", ">", 60, 1)) 
    {
        if(sendCmd("AT+QISEND=0,0\r\n", "OK", 5, 24))                   // 2分鐘后(每5秒查詢一次,共24次)
        {
            /* 發(fā)送數(shù)據(jù)成功,對方收到數(shù)據(jù) */
        }
        else
        {
            printf("Err:AT+QISEND=0\r\n");                                      
            if(sendCmd("AT+QICLOSE=0\r\n", "OK", 10, 1))                // TCP連接出現(xiàn)異常,關(guān)閉TCP連接
            {
                printf("AT+QICLOSE\r\n");
                EC200S_Connect();
            }
            else
            {
                reset();                                                // 等待10秒,沒有響應(yīng)重啟模塊
            } 
        }
    }
    else
    {
        reset();                                                        // 等待60秒,沒有響應(yīng)重啟模塊
    }
}

/**
 @brief 從TCP服務(wù)器接收數(shù)據(jù)
 @param pRecvDataBuf -[out] 接收數(shù)據(jù)
 @return 接收數(shù)據(jù)長度
*/
uint32_t EC200S_Receive(char *pRecvDataBuf)
{
    uint32_t recvDataLen = 0;
    if(g_isUsart2RecvFinish)                                                    // 如果串口接收完成
    {
        if(strstr((const char *)g_ec200sBuf, "+QIURC: \"recv\",0,") != NULL)    // 如果檢索到關(guān)鍵詞
        {
            memcpy(pRecvDataBuf, g_ec200sBuf, g_ec200sCnt);
            recvDataLen = g_ec200sCnt;
        }
        clearBuffer();
    }   
    return recvDataLen;
}


/*********************************************************************
 * LOCAL FUNCTIONS
 */
/**
 @brief 發(fā)送AT命令
 @param pCmd -[in] 命令字符串
 @param pRes -[in] 需要檢測的返回命令字符串
 @param timeOut -[in] 等待時間
 @param sendNum -[in] 命令發(fā)送次數(shù)
 @return 1 - 成功;0 - 失敗
*/
uint8_t sendCmd(char *pCmd, char *pRes, uint32_t timeOut, uint8_t sendNum)
{
    uint8_t i = 0;
    uint32_t time;
    clearBuffer();                                                              // 清空緩存 
    for(i = 0; i < sendNum; i++)
    {
        time = timeOut * 10;
        USART_SendString(USART2, pCmd);
        while(time--)
        {
            if(g_usart2RecvFinish)                                              // 如果串口接收完成
            {
                if(strstr((const char *)g_ec200sBuf, pRes) != NULL)             // 如果檢索到關(guān)鍵詞
                {
                    printf("%s", g_ec200sBuf);
                    return 1;
                }
            }   
            vTaskDelay(100);                                                   // 等待100毫秒
        }
        clearBuffer();
    }
    return 0;
}

/**
 @brief 清空緩存
 @param 無
 @return 無
*/
void clearBuffer(void)
{
    memset(g_ec200sBuf, 0, sizeof(g_ec200sBuf));
    g_ec200sCnt = 0;
    g_usart2RecvFinish = 0;
}

/**
 @brief 重啟模塊
 @param 無
 @return 無
*/
void reset(void)
{
    printf("reset\n");    
    GPIO_ResetBits(GPIOB, GPIO_Pin_8);
    vTaskDelay(2000);
    GPIO_SetBits(GPIOB, GPIO_Pin_8);
}

/****************************************************END OF FILE****************************************************/

4.2 board_ec200s.h

#ifndef _BOARD_EC200S_H_
#define _BOARD_EC200S_H_

/*********************************************************************
 * INCLUDES
 */
#include "stm32f10x.h"

/*********************************************************************
 * GLOBAL VARIABLES
 */  
extern uint8_t g_usart2RecvFinish;      // 串口2接收標(biāo)志串口接收完成標(biāo)志
extern char g_ec200sBuf[1024];          // 接收緩存
extern uint32_t g_ec200sCnt;            // 接收計數(shù)

/*********************************************************************
 * API FUNCTIONS
 */
uint8_t EC200S_Init(void);
void EC200S_GpioConfig(void);
uint8_t EC200S_NetConfig(void);
void EC200S_Connect(void);
void EC200S_Send(char *pString);
uint32_t EC200S_Receive(char *pRecvDataBuf);

#endif /* _BOARD_EC200S_H_ */

六、使用方法

EC200S_GpioConfig();
EC200S_Init();
while(1)                                                            // 任務(wù)都是一個無限循環(huán),不能返回
{
    EC200S_Send("TEST");
    vTaskDelay(10000);  
    char recvDataBuf[256] = {0};
    int recvDataLen = EC200S_Receive(recvDataBuf);           
}
/**
 @brief 串口2收發(fā)中斷
 @param 無
 @return 無
*/
void USART2_IRQHandler(void)
{
    if(USART_GetITStatus(USART2, USART_IT_RXNE) != RESET)                           // 接收中斷
    {
        g_usart2RecvFinish = 1;                                                   // 串口2接收標(biāo)志

        if(g_ec200sCnt >= sizeof(g_ec200sBuf))
        {
            g_ec200sCnt = 0;                                                        // 防止串口被刷爆
        }

        g_ec200sBuf[g_ec200sCnt++] = USART2->DR;
        
        USART_ClearFlag(USART2, USART_FLAG_RXNE);
    }                                                            
}

到了這里,關(guān)于STM32F103 4G Cat.1模塊EC200S使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • STM32F103標(biāo)準(zhǔn)庫函數(shù)驅(qū)動max30102心率血氧模塊

    STM32F103標(biāo)準(zhǔn)庫函數(shù)驅(qū)動max30102心率血氧模塊

    實際接線圖, 1.VIN?3v-5v都可以 2.SDA SCL 是兩根依據(jù)IIC傳輸?shù)木€(具體看你想用哪兩個IO口) 代碼里面iicStart.c有解釋 3.GND接地 4.其余的端口,我沒接,最后是可以接受到數(shù)據(jù)的。 (想更詳細了解模塊的朋友,可以看該模塊手冊)手冊放下面了 ----------------------------------------------

    2023年04月15日
    瀏覽(30)
  • STM32f103增加ESP8266模塊,通過Wifi用手機TCP服務(wù)端遠程與STM32通信

    STM32f103增加ESP8266模塊,通過Wifi用手機TCP服務(wù)端遠程與STM32通信

    提示:esp8266開啟透傳模式,連上路由器Wifi(電腦熱點),接入STM32串口引腳。另外手機TCP服務(wù)端是手機IP地址+串口號(大于8000滴) 最近對ESP8266模塊進行小了解,知道只要對8266通過串口發(fā)送AT指令進行配置其工作模式,就能夠通過手機調(diào)試APP創(chuàng)建什么TCP/UDP服務(wù)端/客戶端和8266進行

    2024年02月16日
    瀏覽(27)
  • STM32F103C8T6+LD3320語音識別模塊智能燈控

    STM32F103C8T6+LD3320語音識別模塊智能燈控

    由于代碼需求量過大,不方便一一回復(fù),請大家關(guān)注微信公眾號“微電子基地”(頭像與CSDN頭像一致),點擊智能燈控即可獲取項目代碼及功能介紹,注:僅供參考學(xué)習(xí)。 ?LD3320 是一顆基于非特定人語音識別(SI-ASR:Speaker-Independent Automatic SpeechRecognition)技術(shù)的語音識別/聲

    2023年04月09日
    瀏覽(24)
  • ESP8266 模塊簡易驅(qū)動程序 -- 基于 STM32F103 及原子云固件實現(xiàn)云功能

    ESP8266 模塊簡易驅(qū)動程序 -- 基于 STM32F103 及原子云固件實現(xiàn)云功能

    本簡易驅(qū)動程序是基于 正點原子 的ESP8266模塊,主要用于實現(xiàn)連接 原子云 的功能。MCU選用的是 STM32F103ZET6 注:原子云固件添加了 AT+ATKCLDSTA 和 AT+ATKCLDCLS 兩條指令 用于連接正點原子自家的原子云平臺,原廠的AT指令不受任何影響 本程序主要實現(xiàn)了如下功能: 設(shè)定工作模式 連

    2023年04月23日
    瀏覽(30)
  • AS608指紋模塊與stm32f103c8t6通信實現(xiàn)指紋識別

    AS608指紋模塊與stm32f103c8t6通信實現(xiàn)指紋識別

    目錄 ?AS608指紋模塊 ?stm32f103c8t6最小系統(tǒng)板以及其他外設(shè) 工程資料 遇到的問題 ?光學(xué)指紋模塊更好用一點,電容式指紋模塊的通信協(xié)議有一點不一樣。 網(wǎng)上可以搜到相關(guān)的串口通信協(xié)議用戶手冊 首先可以嘗試通過usb轉(zhuǎn)串口讓AS608與電腦串口通信,看通信協(xié)議,用電腦串口發(fā)

    2024年01月18日
    瀏覽(20)
  • 學(xué)習(xí)筆記 02:關(guān)于在某寶上面購買的stm32f103c8t6最小系統(tǒng)開發(fā)板如何使用USBtoTTL模塊燒錄程序的記錄

    學(xué)習(xí)筆記 02:關(guān)于在某寶上面購買的stm32f103c8t6最小系統(tǒng)開發(fā)板如何使用USBtoTTL模塊燒錄程序的記錄

    ? ? ? ? 最近在學(xué)習(xí)用stm32制作,于是乎在某寶上面買了一個最小系統(tǒng)。我身邊因為沒有STLink、JLink等燒錄器。無法燒錄,痛苦面具的我差點就要去買一個燒錄器,好在突然想起我之前搞藍牙調(diào)試的時候有一塊USBtoTTL模塊,我可以用它來燒錄程序,做一下筆記備忘。 stm32f103c8

    2024年02月05日
    瀏覽(20)
  • J-Link使用匯總(STM32F103)

    J-Link使用匯總(STM32F103)

    內(nèi)容包括SWD硬件連接,Keil仿真設(shè)置與其問題解決, J-Flash解除寫保護與下載Hex文件及對芯片批量加密 。紫色文字是超鏈接,點擊自動跳轉(zhuǎn)至相關(guān)博文。持續(xù)更新,原創(chuàng)不易!? 一、SWD實時仿真硬件電路 1、SWD實時仿真接線 2、注意 二、仿真設(shè)置 三、仿真時問題的解決 (Keil5.

    2024年02月06日
    瀏覽(30)
  • STM32F103C8T6與2.4G無線模塊NRF24L01連接

    STM32F103C8T6與2.4G無線模塊NRF24L01連接

    最近使用到了這個2.4G無線模塊NRF24L01,比藍牙好用,需要同時使用兩個來用,它長這樣: 使用它需要代碼支持,因此我在耗費了一些精力后,從網(wǎng)上東拼西湊了一些代碼,修修補補后使它能夠正常運行, 注意:我只測試了兩個2.4G無線模塊NRF24L01的連接。 下圖是2.4G無線模塊

    2024年02月12日
    瀏覽(35)
  • 使用STM32F103的串口實現(xiàn)IAP程序升級功能

    使用STM32F103的串口實現(xiàn)IAP程序升級功能

    ??IAP程序燒錄全過程演示: ?這幾天折騰IAP升級功能,狂補了很多相關(guān)BootLoader相關(guān)的知識。本來最想實現(xiàn)IAP升級程序的方式是,基于SPI通訊的SD卡,借助掛載的FatFS文件系統(tǒng),來實現(xiàn)對目標(biāo)stm32芯片的自身程序的升級,奈何沒有實現(xiàn),只能求其次,先來通過官方現(xiàn)有的串口實

    2024年02月10日
    瀏覽(21)
  • stm32f103rct6使用內(nèi)部晶振作為時鐘源

    stm32f103rct6使用內(nèi)部晶振作為時鐘源

    stm32f103rct6(庫函數(shù)版例程)使用內(nèi)部晶振8M,倍頻64M 參考 https://blog.csdn.net/oHuanCheng/article/details/105112884 http://www.openedv.com/forum.php?mod=viewthreadtid=286233 https://blog.csdn.net/ll148305879/article/details/106138302 修改system_stm32f10x.c文件中的void SystemInit(void)函數(shù) 內(nèi)部時鐘用到了FLASH,需要添加s

    2024年02月07日
    瀏覽(1209)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包