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

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

STM32CUBEMX(9)--ADC通過輪詢方式讀取,USART打印

嵌入式單片機(jī)MCU開發(fā) ? 來源:嵌入式單片機(jī)MCU開發(fā) ? 作者:嵌入式單片機(jī)MCU開 ? 2022-11-14 16:34 ? 次閱讀

概述

本章通過使用模數(shù)轉(zhuǎn)換器ADC),通過輪詢方式采集多個ADC通道電壓。

之前已經(jīng)做過DMA方式采樣,詳情請查看:

https://blog.csdn.net/qq_24312945/article/details/106557538

硬件準(zhǔn)備

首先需要準(zhǔn)備一個開發(fā)板,這里我準(zhǔn)備的是NUCLEO-F030R8的開發(fā)板:

在這里插入圖片描述

選擇芯片型號

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

在這里插入圖片描述

配置時鐘

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

在這里插入圖片描述

配置時鐘樹

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

在這里插入圖片描述

串口配置

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

在這里插入圖片描述

ADC配置

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

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

在這里插入圖片描述

生成工程設(shè)置

注意在生產(chǎn)工程設(shè)置中不能出現(xiàn)中文,不然會報錯。

在這里插入圖片描述

生成代碼

在這里插入圖片描述

配置keil

在這里插入圖片描述

代碼

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

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

函數(shù)聲明和串口重定向:

/* USER CODE BEGIN PTD */
#ifdef __GNUC__
#define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
#else
#define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
#endif /* __GNUC__ */


PUTCHAR_PROTOTYPE
{
    HAL_UART_Transmit(&huart1 , (uint8_t *)&ch, 1, 0xFFFF);
    return ch;
}
/* USER CODE END PTD */

變量定義:

/* USER CODE BEGIN 0 */
uint8_t i;
uint16_t adcBuf[3];//存放ADC
/* USER CODE END 0 */

主循環(huán):

/* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
    i=0; 
 while(i<3)
 {
  HAL_ADC_Start(&hadc);//啟動ADC
  HAL_ADC_PollForConversion(&hadc,0xffff);//表示等待轉(zhuǎn)換完成,第二個參數(shù)表示超時時間,單位ms.
  //HAL_ADC_GetState(&hadc1)為換取ADC狀態(tài),HAL_ADC_STATE_REG_EOC表示轉(zhuǎn)換完成標(biāo)志位,轉(zhuǎn)換數(shù)據(jù)可用。
  if(HAL_IS_BIT_SET(HAL_ADC_GetState(&hadc),HAL_ADC_STATE_REG_EOC))//就是判斷轉(zhuǎn)換完成標(biāo)志位是否設(shè)置,HAL_ADC_STATE_REG_EOC表示轉(zhuǎn)換完成標(biāo)志位,轉(zhuǎn)換數(shù)據(jù)可用
  {
   //讀取ADC轉(zhuǎn)換數(shù)據(jù),數(shù)據(jù)為12位。查看數(shù)據(jù)手冊可知,寄存器為16位存儲轉(zhuǎn)換數(shù)據(jù),數(shù)據(jù)右對齊,則轉(zhuǎn)換的數(shù)據(jù)范圍為0~2^12-1,即0~4095.
   adcBuf[i]=HAL_ADC_GetValue(&hadc);
     printf("
adc%d=%4.0d,電壓=%1.4f",i,adcBuf[i],adcBuf[i]*3.3f/4096);
   i++;
  }
 }

 HAL_ADC_Stop(&hadc);
 HAL_Delay(500);        
  }
  /* USER CODE END 3 */

演示效果

設(shè)定adc0口接3.3V,adc1口接GND,adc15口接1.5V,輸出如下。

在這里插入圖片描述

審核編輯:湯梓紅

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

    關(guān)注

    98

    文章

    6391

    瀏覽量

    543757
  • USART
    +關(guān)注

    關(guān)注

    1

    文章

    195

    瀏覽量

    30760
  • stm32cubemx
    +關(guān)注

    關(guān)注

    5

    文章

    280

    瀏覽量

    14713
收藏 人收藏

    評論

    相關(guān)推薦

    STM32CUBEMX(9)--ADC通過輪詢方式讀取,USART打印

    概述 本章通過使用模數(shù)轉(zhuǎn)換器(ADC),通過輪詢方式采集多個ADC通道電壓。 之前已經(jīng)做過DMA
    發(fā)表于 09-10 15:31

    轉(zhuǎn):使用STM32CubeMX生成用于STM32-V5開發(fā)板的USART工程中斷方式

    本期教程使用STM32CubeMX生成可用于STM32-V5開發(fā)板的USART1中斷方式的工程,通過本期教程讓大家對
    發(fā)表于 09-09 11:27

    STM32CUBEME--ADC通過輪詢方式讀取

    STM32CUBEME--ADC通過輪詢方式讀取,USART
    發(fā)表于 08-10 07:58

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

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

    STM32單片機(jī)基礎(chǔ)21——使用ADC讀取電壓值

    title: 【STM32Cube-21】使用ADC讀取電壓值tags: STM32CubeMX ADCcategories: STM32C
    發(fā)表于 11-19 09:51 ?35次下載
    <b class='flag-5'>STM32</b>單片機(jī)基礎(chǔ)21——使用<b class='flag-5'>ADC</b><b class='flag-5'>讀取</b>電壓值

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

    STM32CUBEME--3ADC通過DMA方式采樣,USART打印概述硬件準(zhǔn)備選擇芯片型號配置時鐘源配置時鐘樹串口配置
    發(fā)表于 12-01 14:51 ?7次下載
    <b class='flag-5'>STM32CUBEMX</b>(3)--<b class='flag-5'>ADC</b><b class='flag-5'>通過</b>DMA<b class='flag-5'>方式</b>采樣,<b class='flag-5'>USART</b><b class='flag-5'>打印</b>

    STM32CUBEMX(10)--Flash讀寫

    STM32CUBEME--ADC通過輪詢方式讀取,USART
    發(fā)表于 12-02 11:21 ?11次下載
    <b class='flag-5'>STM32CUBEMX</b>(10)--Flash讀寫

    STM32CUBEMX 工程添加 軟件iic讀取mpu6050

    USART串口 DMA發(fā)送,ADC采集,定時器中斷中進(jìn)行ADC采集和USART串口發(fā)送,mpu6050代碼遷移適配從而在定時器中斷中讀取a
    發(fā)表于 12-06 12:06 ?6次下載
    <b class='flag-5'>STM32CUBEMX</b> 工程添加  軟件iic<b class='flag-5'>讀取</b>mpu6050

    STM32CubeMX完成USART串口通信

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

    STM32CubeMX實現(xiàn)串口通信(中斷方式

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

    STM32CubeMX學(xué)習(xí)筆記——STM32H743_DAC

    main.c使用內(nèi)置的ADC1 IN19 與 DAC1 Channel1進(jìn)行回環(huán)測試(設(shè)置DAC值,在外部用杜邦線連接起來使用ADC讀取值)采用STM32CubeMX 5.0.0 版本
    發(fā)表于 12-27 18:40 ?17次下載
    <b class='flag-5'>STM32CubeMX</b>學(xué)習(xí)筆記——<b class='flag-5'>STM32</b>H743_DAC

    STM32CubeMX與HAL庫學(xué)習(xí)--ADCUSART的簡單練習(xí)

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

    STM32CUBEMX(5)--自定義紅外NEC解碼,定時器TIM捕獲方式

    本篇文章主要介紹如何使用STM32CubeMX對紅外波形進(jìn)行解碼,并通過串口打印。
    的頭像 發(fā)表于 11-14 15:48 ?3398次閱讀
    <b class='flag-5'>STM32CUBEMX</b>(5)--自定義紅外NEC解碼,定時器TIM捕獲<b class='flag-5'>方式</b>

    STM32CUBEMX開發(fā)GD32F303(10)----雙ADC輪詢模式掃描多個通道

    。 本章主要配置,雙ADC輪詢模式掃描多個通道,通過串口進(jìn)行打印。 查閱手冊可以得知,PA9、PA10為串口0的輸出和輸入口。
    的頭像 發(fā)表于 11-29 17:38 ?1764次閱讀
    <b class='flag-5'>STM32CUBEMX</b>開發(fā)GD32F303(10)----雙<b class='flag-5'>ADC</b><b class='flag-5'>輪詢</b>模式掃描多個通道

    STM32CubeMx配置USART1增加打印功能

    STM32CubeMx配置USART1增加打印功能
    的頭像 發(fā)表于 08-22 10:32 ?1146次閱讀
    <b class='flag-5'>STM32CubeMx</b>配置<b class='flag-5'>USART</b>1增加<b class='flag-5'>打印</b>功能