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

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

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

3天內不再提示

STM32CUBEMX(3)--ADC通過DMA方式采樣,USART打印

嵌入式單片機MCU開發 ? 來源:嵌入式單片機MCU開發 ? 作者:嵌入式單片機MCU開 ? 2022-11-14 15:41 ? 次閱讀

概述

直接存儲器訪問(DMA)用于在外設與存儲器之間以及存儲器與存儲器之間提供高速數據傳輸。可以在無需任何CPU操作的情況下通過DMA快速傳輸傳輸。這樣節省的CPU資源可供其它操作使用。

DMA允許在后臺執行數據傳輸,無需Cortex-MO處理器干預。在此操作過程中,主處理器可以執行其它任務,僅當整個數據塊需要處理時,才會中斷主處理器。這樣即使傳輸大量數據也不會對系統性能造成太大影響。

DMA主要用于為不同的外設模塊實現集中數據緩沖存儲(通常在系統SRAM中)。與分布式解決方案(其中每個外設都需要實現自己的本地數據存儲)相比,DMA解決方案在硅片成本和功耗方面的成本較低。

根據使用的產品型號的不同,有一個或兩個DMA模塊。

STM32F0XX DMA控制器總共有5個通道用于DMA1,每個通道都專門管理來自一個或多個外設的存儲器訪問請求。它具有一個仲裁器,用于處理不同的DMA請求的優先級。

本篇文章主要介紹如何使用STM32CubeMX實現ADC在DMA下快速采集,并且打印出去。

非DMA接收請查看:https://blog.csdn.net/qq_24312945/article/details/109685401

在這里插入圖片描述

硬件準備

首先需要準備一個開發板,這里我準備的是NUCLEO-F030R8的開發板:

在這里插入圖片描述

選擇芯片型號

使用STM32CUBEMX選擇芯片stm32f030r8,如下所示:

在這里插入圖片描述

配置時鐘

HSE與LSE分別為外部高速時鐘和低速時鐘,在本文中使用內置的時鐘源,故都選擇Disable選項,如下所示:

在這里插入圖片描述

在這里插入圖片描述

配置時鐘樹

STM32F0的最高主頻到48M,所以配置48即可:

在這里插入圖片描述插入圖片描述

串口配置

本次實驗使用的串口1進行串口通信,波特率配置為115200。

在這里插入圖片描述

ADC配置

STM32f030中,有一個ADC(模擬/數字轉換器),每個 ADC 有 12 位、 10 位、 8 位和 6 位可選,每個ADC有16個外部通道、2個內部通道和一個VBAT 通道的信號

本文將開ADC的IN0、IN1、IN4一共三個通道,來分別讀取ADC,由于串口2和IN2,IN3復用,故不使用IN2、IN3。配置如下:

在這里插入圖片描述

開啟DMA:

在這里插入圖片描述

打開中斷:

在這里插入圖片描述

生成工程設置

最后設置生成獨立的初始化文件:

在這里插入圖片描述

生成代碼

在這里插入圖片描述

配置keil

在這里插入圖片描述

代碼

在main.c中,添加頭文件,若不添加會出現 identifier "FILE" is undefined報錯。

/* USER CODE BEGIN Includes */
#include "stdio.h"
/* USER CODE END Includes */

函數聲明和串口重定向:

/* USER CODE BEGIN PFP */
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */
/* USER CODE END PFP */
/* USER CODE BEGIN 0 */
PUTCHAR_PROTOTYPE
{
    HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);
    return ch;
}
/* USER CODE END 0 */

變量定義:

/* USER CODE BEGIN 1 */
        uint32_t ADC_1, ADC_2,ADC_3;
        //各采樣30次,故30*3為90
        uint32_t ADC_Value[90];
        uint8_t i;
  /* USER CODE END 1 */

使用DMA傳輸:

/* USER CODE BEGIN 2 */
    HAL_ADC_Start_DMA(&hadc,(uint32_t*)&ADC_Value,90);    //使用DMA傳輸
  /* USER CODE END 2 */

主循環:

/* USER CODE BEGIN WHILE */
  while (1)
  {
        //放個延遲,防止程序運行第一次讀出數據有誤
        HAL_Delay(100);
        ADC_1=0;
        ADC_2=0;
        ADC_3=0;
            for(i=0,ADC_1=0,ADC_2=0;i<90;)
        {
            ADC_1+=ADC_Value[i++];   
            ADC_2+=ADC_Value[i++];
            ADC_3+=ADC_Value[i++];
        }
    printf("ADC數據如下
");
//除以30為求30次平均ADC值,乘以3.3為以3.3電壓為基準,除以4096為ADC配置為12位

        printf("ADC_IN0=%1.4f
",ADC_1/30*3.3f/4096);
        printf("ADC_IN1=%1.4f
",ADC_2/30*3.3f/4096);
        printf("ADC_IN2=%1.4f
",ADC_3/30*3.3f/4096);
    /* USER CODE END WHILE */


    /* USER CODE BEGIN 3 */
        HAL_Delay(900);
  }
  /* USER CODE END 3 */

演示效果

設定adc1口接3.3V,adc2口接GND,adc口接1.5V,輸出如下。

在這里插入圖片描述

審核編輯:湯梓紅

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

    關注

    99

    文章

    6537

    瀏覽量

    545896
  • USART
    +關注

    關注

    1

    文章

    195

    瀏覽量

    30996
  • stm32cubemx
    +關注

    關注

    5

    文章

    284

    瀏覽量

    15052
收藏 人收藏

    評論

    相關推薦

    STM32CUBEMX開發GD32F303(9)----USART通過DMA收發

    概述 本章STM32CUBEMX配置STM32F103,并且在GD32F303中進行開發,同時通過GD32303C_START開發板內進行驗證。 本章主要配置串口進行DMA收發。 查閱
    的頭像 發表于 11-29 11:15 ?2234次閱讀
    <b class='flag-5'>STM32CUBEMX</b>開發GD32F303(9)----<b class='flag-5'>USART</b><b class='flag-5'>通過</b><b class='flag-5'>DMA</b>收發

    STM32CUBEMX(2)--USART通過DMA方式接收不定長數據

    。 本篇文章主要介紹如何使用STM32CubeMX實現串口DMA讀取,并且打印出去。QQ群:615061293。 硬件準備 首先需要準備一個開發板,這里我準備的是NUCLEO-F030R8的開發板
    發表于 09-04 11:48

    STM32CUBEMX(3)--ADC通過DMA方式采樣USART打印

    的優先級。 本篇文章主要介紹如何使用STM32CubeMX實現ADCDMA下快速采集,并且打印出去。 QQ群:615061293。 非DMA
    發表于 09-04 14:08

    轉:使用STM32CubeMX生成用于STM32-V5開發板的USART工程DMA方式

    本期教程使用STM32CubeMX生成可用于STM32-V5開發板的USART1的DMA方式的工程,通過
    發表于 09-09 11:29

    通過CubeMx實現ADC多通道掃描采集DMA方式

    通過串口1打印顯示開發環境:STM32CubeMx 5.4.0+Keil 5.28下載方式:ST_LINK V2項目內容CubeMx配置配
    發表于 08-11 08:14

    如何使用STM32CubeMX實現ADCDMA下快速采集并且打印出去?

    如何使用STM32CubeMX實現ADCDMA下快速采集并且打印出去?
    發表于 01-26 07:26

    STM32CubeMX軟件工程描述_ USART配置過程

    STM32CubeMX軟件工程描述_USART配置過程
    的頭像 發表于 03-25 10:43 ?3444次閱讀
    <b class='flag-5'>STM32CubeMX</b>軟件工程描述_ <b class='flag-5'>USART</b>配置過程

    STM32CUBEMX配置教程(十二)STM32的定時器觸發的固定頻率ADC采樣(使用DMA

    STM32CUBEMX配置教程(十二)STM32的定時器觸發的固定頻率ADC采樣(使用DMA
    發表于 11-24 13:51 ?85次下載
    <b class='flag-5'>STM32CUBEMX</b>配置教程(十二)<b class='flag-5'>STM32</b>的定時器觸發的固定頻率<b class='flag-5'>ADC</b><b class='flag-5'>采樣</b>(使用<b class='flag-5'>DMA</b>)

    STM32CUBEMX配置教程(十三)STM32的定時器觸發的固定頻率DAC輸出(使用DMA

    STM32CUBEMX配置教程(十三)STM32的定時器觸發的固定頻率DAC輸出(使用DMA
    發表于 11-24 14:06 ?47次下載
    <b class='flag-5'>STM32CUBEMX</b>配置教程(十三)<b class='flag-5'>STM32</b>的定時器觸發的固定頻率DAC輸出(使用<b class='flag-5'>DMA</b>)

    STM32CUBEMX(3)--ADC通過DMA方式采樣USART打印

    STM32CUBEME--3ADC通過DMA方式采樣USART
    發表于 12-01 14:51 ?7次下載
    <b class='flag-5'>STM32CUBEMX</b>(<b class='flag-5'>3</b>)--<b class='flag-5'>ADC</b><b class='flag-5'>通過</b><b class='flag-5'>DMA</b><b class='flag-5'>方式</b><b class='flag-5'>采樣</b>,<b class='flag-5'>USART</b><b class='flag-5'>打印</b>

    STM32CubeMX完成USART串口通信

    STM32CubeMX完成USART串口通信
    發表于 12-06 20:36 ?24次下載
    <b class='flag-5'>STM32CubeMX</b>完成<b class='flag-5'>USART</b>串口通信

    stm32CubeMx ADC多通道掃描模式DMA + 采集STM32內部溫度傳感器的值

    方式通過串口1打印顯示開發環境:STM32CubeMx 5.4.0+Keil 5.28下載方式:ST_LINK V2項目內容
    發表于 12-08 21:06 ?18次下載
    <b class='flag-5'>stm32CubeMx</b> <b class='flag-5'>ADC</b>多通道掃描模式<b class='flag-5'>DMA</b> + 采集<b class='flag-5'>STM32</b>內部溫度傳感器的值

    STM32CubeMX實現串口通信(中斷方式

    這里寫目錄標題一、STM32CubeMX工程創建1、題目要求2、配置STM32CubeMX工程一、STM32CubeMX工程創建1、題目要求完成一個STM32
    發表于 12-24 19:18 ?11次下載
    <b class='flag-5'>STM32CubeMX</b>實現串口通信(中斷<b class='flag-5'>方式</b>)

    STM32CubeMX與HAL庫學習--ADCUSART的簡單練習

    STM32CubeMX與HAL庫學習--ADCUSART的簡單練習前言STM32CubeMX生成初始化代碼在MDK-ARM里編輯代碼效果前言最近看了
    發表于 01-12 20:27 ?13次下載
    <b class='flag-5'>STM32CubeMX</b>與HAL庫學習--<b class='flag-5'>ADC</b>與<b class='flag-5'>USART</b>的簡單練習

    STM32CubeMx配置USART1增加打印功能

    STM32CubeMx配置USART1增加打印功能
    的頭像 發表于 08-22 10:32 ?1325次閱讀
    <b class='flag-5'>STM32CubeMx</b>配置<b class='flag-5'>USART</b>1增加<b class='flag-5'>打印</b>功能
    主站蜘蛛池模板: 国产成人经典三级在线观看 | 天天操夜夜摸 | 女性私密部位扒开的视频 | 性欧美xx| 日本特黄特色特爽大片老鸭 | 能看的黄色网址 | 深爱婷婷激情网 | 久久久久久久国产精品影院 | 天天天天操| 浮荡视频在线观看免费 | 国产免费一区二区三区最新 | 久久黄色网| 婷婷了五月色香综合缴情 | 高h道具触手play肉男男 | 一级特级毛片免费 | 伊人精品成人久久综合欧美 | 久久99热精品免费观看无卡顿 | 热99re久久精品2久久久 | 日本吻胸抓胸激烈视频网站 | 性欧美性free| 一级不卡毛片 | 性久久久久久久 | 久草资源网 | 校园激情综合网 | 69性xxxxfreexxxx | 欧美成人精品一级高清片 | 老子影院午夜精品欧美视频 | 免费在线观看污视频 | 国内精品久久久久影院薰衣草 | 性做久久久久久久免费看 | 婷婷在线免费观看 | 国产片18在线观看 | 日日搞夜夜操 | 看免费视频 | www射射一区 | 亚洲国产精品综合久久网络 | 中国同志chinese小彬tv | 全免费一级毛片在线播放 | 亚洲人成亚洲人成在线观看 | 高清不卡日本v在线二区 | 在线小视频你懂的 |