国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內不再提示

CW32數字電壓電流表軟件教程-實驗六:串口藍牙發送

CW32生態社區 ? 來源:CW32生態社區 ? 作者:CW32生態社區 ? 2024-05-31 15:45 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

7.1.串口基礎知識

7.1.1.串口介紹

串行接口簡稱串口,也稱串行通信接口或串行通信接口(通常指COM接口),是采用串行通信方式的擴展接口。串行接口 (Serial Interface)是指數據一位一位地順序傳送。其特點是通信線路簡單,只要一對傳輸線就可以實現雙向通信(可以直接利用電話線作為傳輸線),從而大大降低了成本,特別適用于遠距離通信,但傳送速度較慢。

7.1.2.串口通信參數介紹

  • 波特率:衡量通信速度的參數,它表示每秒鐘傳送的bit的個數。
  • 數據位:衡量通信中實際數據位的參數,表示一個信息包里包含的數據位的個數。
  • 停止位:用于表示單個信息包的最后位,典型值為1、1.5和2位。由于數據是在傳輸線上傳輸的,每個設備都有自己的時鐘,很有可能在通信過程中出現不同步,停止位不僅僅表示傳輸的結束,還能提供校正時鐘同步的機會。停止位的位數越多,不同時鐘同步的容忍程度越大,但是數據傳輸率也越慢。
  • 奇偶檢驗位:表示一種簡單的檢查錯誤的方式。

關于更為詳細的介紹請搜索百度。

7.1.3.串口工作模式

串口可以工作在單工、半雙工和全雙工模式下。

  • 單工:在通信的任意時刻,信息只能由A傳到B。
  • 半雙工:在通信的任意時刻,信息即可由A傳到B,又能由B傳到A,但同時只能有一個方向上的傳輸存在。
  • 全雙工:在通信的任意時刻,通信線路上存在A到B和B到A的雙向信號傳輸。

7.1.4.串口通信協議

串口在進行通信的時候會按照數據包的形式進行發送,幀格式如圖1-4-1所示。

圖9-1 串口通信協議

串口通信是一位一位地傳輸,每傳輸一個字節總是以起始位開始,以停止位結束,字符之間沒有固定的時間間隔要求。每一個字符的前面都有一位起始位(低電平),后面由8位數據位組成,如果開啟了校驗位,則最后一位數據位是校驗位,最后是停止位。停止位后面是不定長的空閑位,停止位和空閑位都規定為高電平。

7.2.串口藍牙接線原理圖

在數字電壓電流表上默認使用的串口是串口2,接口為CW_UART2_TX和CW_UART2_RX。關于串口和藍牙連接原理圖如圖9-2所示。

圖 9-2 串口藍牙接線

使用藍牙模塊KT6368將信息發送出去,只需要調用CW32的UART_2將信息傳輸至藍牙模塊即可。

7.3.串口驅動流程

串口驅動有以下幾個流程:配置CW32時鐘樹,配置UART_2串口,調用串口打印信息。通過查看上文的CW32時鐘樹可知,串口2掛載在高級外設時鐘 PCLK上,而此前的時鐘配置已將PCLK配置成了6MHz。具體的配置函數如下:

void Uart2_Init(void)
{        
    //外設時鐘使能
    RCC_AHBPeriphClk_Enable(RCC_AHB_PERIPH_GPIOA, ENABLE);      //使能串口要用到的GPIO時鐘
    RCC_APBPeriphClk_Enable1(RCC_APB1_PERIPH_UART2, ENABLE);    //使能串口時鐘
    
    GPIO_InitTypeDef GPIO_InitStructure;                        //GPIO初始化
    GPIO_InitStructure.IT = GPIO_IT_NONE;
    GPIO_InitStructure.Pins =  GPIO_PIN_7;
    GPIO_InitStructure.Mode = GPIO_MODE_INPUT_PULLUP;
    GPIO_InitStructure.Speed = GPIO_SPEED_HIGH;
    GPIO_Init(CW_GPIOA, &GPIO_InitStructure);
    PA07_AFx_UART2RXD();
        
    GPIO_InitStructure.IT = GPIO_IT_NONE;
    GPIO_InitStructure.Pins = GPIO_PIN_6;
    GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
    GPIO_InitStructure.Speed = GPIO_SPEED_HIGH;
    GPIO_Init(CW_GPIOA, &GPIO_InitStructure);
    PA06_AFx_UART2TXD();
  
    USART_InitTypeDef USART_InitStructure;                       //串口初始化
    USART_InitStructure.USART_BaudRate = 115200;                 //設置波特率
    USART_InitStructure.USART_Over = USART_Over_16;              //串口采樣方式
    USART_InitStructure.USART_Source = USART_Source_PCLK;        //串口傳輸時鐘源采用PCLK
    USART_InitStructure.USART_UclkFreq = RCC_Sysctrl_GetPClkFreq();  //頻率為PCLK的頻率
    USART_InitStructure.USART_StartBit = USART_StartBit_FE;      //數據開始位
    USART_InitStructure.USART_StopBits = USART_StopBits_1;       //數據停止位
    USART_InitStructure.USART_Parity = USART_Parity_No ;         //無校驗
    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;//無硬件流控
    USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;  //發送/接收使能
    USART_Init(CW_UART2, &USART_InitStructure);
}

在完成串口的配置后,還需要寫一個串口發送函數

void USART_SendString(UART_TypeDef *USARTx, char *String)
{
    while (*String != '?')     //?表示沒有數據
    {
        USART_SendData_8bit(USARTx, *String);   //發送一位8bit數據
        while (USART_GetFlagStatus(USARTx, USART_FLAG_TXE) == RESET);  //發送緩沖器未空則等待
        String++;              //發送一次完成后,準備發送下一位數據
    }
    while (USART_GetFlagStatus(USARTx, USART_FLAG_TXBUSY) == SET);     //發送串口狀態忙則等待  
}

由于定時器中斷為1ms,而串口發送占用的時間較長,所以我們1000ms使用藍牙發送一次信息,這里的寫法并未使用定時器。

char data_reg[24];    //定義數組,用于數據打印
uint32_t Ble_Time=0;  //1000ms計時變量
while(1)              //main函數里的while循環
    {
      if(GetTick() >= (Ble_Time + 1000))     //如果此時的時間大于上一次的1000ms
        {
          Ble_Time = GetTick();              //記錄此刻時間
          Volt_Cal();                        //電壓計算
          sprintf(data_reg,"volt=%urn",Cal_Buffer);  //打印數據
          USART_SendString(CW_UART2,data_reg);         //調用串口上傳數據給藍牙
        }
    }

注意 GetTick() 函數定義在頭文件 cw32f003_systick.h 中,而此函數要使用到系統時鐘中斷,所以還需要配置系統時鐘中斷:

InitTick(48000000);                // SYSTICK 的工作頻率為48MHz,每ms中斷一次

最終可以收到藍牙傳遞的數據:

圖9-3 藍牙發送數據

審核編輯 黃宇

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

    關注

    119

    文章

    6312

    瀏覽量

    178685
  • 串口
    +關注

    關注

    15

    文章

    1618

    瀏覽量

    82802
  • 電流表
    +關注

    關注

    2

    文章

    239

    瀏覽量

    27529
  • 數字電壓
    +關注

    關注

    0

    文章

    9

    瀏覽量

    9988
  • CW32
    +關注

    關注

    1

    文章

    299

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    請問CW32中的CW是啥意思?

    CW32中的CW是啥意思?
    發表于 02-02 07:10

    基于CW32藍牙無刷遙控車案列

    產品應用案例簡介: 聚焦CW32,著手PT2432,驅動無刷電機,集成CH571F,賦能藍牙交互,串聯智能終端,形成組合拳,對標外星科技。? 開源協議: MIT 一、外觀展示 二、電路展示
    發表于 01-15 08:22

    CW32仿真器是什么?

    CW32仿真器是什么
    發表于 01-05 08:04

    CW32單片機如何讓生活更便捷

    較大,且有LCD顯示、低功耗要求的應用場合。這種廣泛的適用性使得CW32單片機在各種產品中都有出色的表現,比如智能馬桶、燃氣、水表、LED調光板、電子顯微鏡、可燃氣體報警器、料位開關、溫控器
    發表于 12-11 06:11

    使用CW32 MCU來實現UART串口通信與GPIO控制

    最近在項目中使用CW32 MCU,完成了一個簡單的UART串口通信和GPIO控制的功能。CW32 MCU的資源相對豐富,特別適合一些低成本、低功耗的嵌入式應用。這里分享一下UART通信與GPIO
    發表于 12-04 08:17

    CW32 MCU在高頻率運行下的系統穩定性的提升方案

    問題,并提出一系列應對措施,包括硬件設計改進和軟件優化策略,以確保系統在高頻工作環境中的可靠性和持續穩定運行。 具體內容包括: 高頻運行對MCU的影響分析: 探討CW32 MCU在高頻率運行時,對電源
    發表于 12-04 08:04

    基于芯源CW32 MCU的LED閃爍示例及代碼分析

    最近我在項目中使用了芯源的CW32 MCU,這是一款非常適合物聯網和低功耗應用的微控制器。在初步學習和使用中,我做了一個簡單的LED閃爍實驗,通過這篇帖子給大家分享一下代碼及相關的配置步驟。 硬件
    發表于 12-04 06:52

    CW32 MCU溫度監測應用

    監測環境溫度,并通過串口將數據發送到PC端進行顯示。 硬件連接 CW32 MCU LM35溫度傳感器 USB轉串口模塊 代碼實現 #include \"
    發表于 12-03 08:03

    基于芯源半導體MCU cw32芯片制作的USB電壓電流表

    1、項目功能介紹 基于芯源半導體MCU cw32芯片制作 USB電壓電流表 基于芯源半導體MCU cw32芯片+INA199芯片制作 USB電壓電流表,精度1%。可以檢測
    發表于 12-02 06:39

    cw32 systick怎么用?

    cw32 systick怎么用
    發表于 12-01 08:10

    【活動評測】基于CW32的wegui實驗+代碼

    簡介 最近參加了cw32生態社區的體驗活動,CW32L012C8T6評估板是一款非常典型的、用于展示和評估國產低功耗MCU的開發板。它的核心價值在于讓開發者能夠以極低的成本,接觸到武漢芯源半導體
    的頭像 發表于 11-19 16:37 ?824次閱讀
    【活動評測】基于<b class='flag-5'>CW32</b>的wegui<b class='flag-5'>實驗</b>+代碼

    CW32 MCU用什么IDE開發?

    推薦使用IAR Embedded Workbench for ARM、Keil μVision for ARM等IDE開發CW32 MCU應用,其中新版本IAR EWARM直接支持CW32 MCU,Keil MDK-ARM則需要安裝CW
    發表于 11-12 07:52

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

    CW32通用型MCU工作電壓是1.65V~5.5V,射頻MCU工作電壓則是1.8V/2.2V~3.6V;通用型CW32F系列MCU,比如:CW
    發表于 11-12 06:49

    CW32 MCU用什么仿真器開發?

    理論上各主流IDE枚舉的、支持ARM Cortex內核的所有硬件仿真器,比如:J-LINK,ULINK,DAP,ST-Link等,都可以仿真、下載CW32 MCU的應用代碼。如果想實現量產或者離線下載應用代碼,則必須配套支持CW32 MCU的PC端
    發表于 11-12 06:01

    CW32】uart_obj_fw 輕量級串口框架

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