精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

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

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

3天內不再提示

CubeMX配置ADC實現幾種方式AD轉換

CHANBAEK ? 來源:博客園-lzh666 ? 作者:博客園-lzh666 ? 2023-02-15 14:02 ? 次閱讀

整理CubeMX配置ADC實現幾種方式AD轉換

(注 : 以STM32F429為例)

1. 輪詢方式

HAL_StatusTypeDef HAL_ADC_Start(ADC_HandleTypeDef* hadc); //輪詢模式,需放在循環中不斷開啟
uint32_t HAL_ADC_GetValue(ADC_HandleTypeDef* hadc)       //獲取轉換結果
HAL_StatusTypeDef HAL_ADC_PollForConversion(ADC_HandleTypeDef* hadc, uint32_t Timeout)   /* 此函數只用于輪詢模式,用于等待轉換完成 */
HAL_StatusTypeDef HAL_ADC_Stop(ADC_HandleTypeDef* hadc); //停止轉換

(1)配置CumeMX,如下圖,選擇規則通道,設置好AD轉換的模式,不掃描,連續轉換。

(2)編程實現

** 2. 中斷方式**

HAL_StatusTypeDef HAL_ADC_Start_IT(ADC_HandleTypeDef* hadc);//中斷模式
 HAL_StatusTypeDef HAL_ADC_Stop_IT(ADC_HandleTypeDef* hadc);
void HAL_ADC_IRQHandler(ADC_HandleTypeDef* hadc);//中斷

(1)配置CubuMX,在輪詢的基礎上,把中斷勾選中,如圖:

(2)編程實現:

編寫中斷回調函數,在里面設置一個標志位。

主循環中判斷此標志位,注意需要調用 HAL_ADC_Start_IT。

3、DMA方式多通道轉換

HAL_StatusTypeDef HAL_ADC_Start_DMA(ADC_HandleTypeDef* hadc, uint32_t* pData, uint32_t Length);//DMA模式
HAL_StatusTypeDef HAL_ADC_Stop_DMA(ADC_HandleTypeDef* hadc);

(1)CubeMX配置,勾選多個通道,然后配置ADC,使能連續轉換和掃描模式,使能DMA請求,配置Rank,如下圖:

(2)編程實現:

注: 如果沒有轉換,要注意時鐘問題。

  1. 定時器觸發+ADC中斷實現單通道AD采集

(1)首先要了解,ADC要好幾種觸發方式,如下,這里我采用TIM8的事件更新來觸發AD轉換。

#define ADC_EXTERNALTRIGCONV_T1_CC1    0x00000000U
#define ADC_EXTERNALTRIGCONV_T1_CC2    ((uint32_t)ADC_CR2_EXTSEL_0)
#define ADC_EXTERNALTRIGCONV_T1_CC3    ((uint32_t)ADC_CR2_EXTSEL_1)
#define ADC_EXTERNALTRIGCONV_T2_CC2    ((uint32_t)(ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0))
#define ADC_EXTERNALTRIGCONV_T2_CC3    ((uint32_t)ADC_CR2_EXTSEL_2)
#define ADC_EXTERNALTRIGCONV_T2_CC4    ((uint32_t)(ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_0))
#define ADC_EXTERNALTRIGCONV_T2_TRGO   ((uint32_t)(ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1))
#define ADC_EXTERNALTRIGCONV_T3_CC1    ((uint32_t)(ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0))
#define ADC_EXTERNALTRIGCONV_T3_TRGO   ((uint32_t)ADC_CR2_EXTSEL_3)
#define ADC_EXTERNALTRIGCONV_T4_CC4    ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_0))
#define ADC_EXTERNALTRIGCONV_T5_CC1    ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_1))
#define ADC_EXTERNALTRIGCONV_T5_CC2    ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_1 | ADC_CR2_EXTSEL_0))
#define ADC_EXTERNALTRIGCONV_T5_CC3    ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_2))
#define ADC_EXTERNALTRIGCONV_T8_CC1    ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_0))
#define ADC_EXTERNALTRIGCONV_T8_TRGO   ((uint32_t)(ADC_CR2_EXTSEL_3 | ADC_CR2_EXTSEL_2 | ADC_CR2_EXTSEL_1))
#define ADC_EXTERNALTRIGCONV_Ext_IT11  ((uint32_t)ADC_CR2_EXTSEL)
#define ADC_SOFTWARE_START             ((uint32_t)ADC_CR2_EXTSEL + 1U)

(2)CubeMX配置TIM8與ADC1:

TIM8配置為1Hz,即1S觸發一次AD轉換。

ADC1配置如下:別忘了開啟中斷

(3)代碼實現:實現的效果是1S打印一次AD轉換的結果

1 //首先調用
2     HAL_ADC_Start_IT(&hadc1);
3     HAL_TIM_Base_Start(&htim8); 
4 
5 //編寫AD轉換完成處理函數
6 void HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef* AdcHandle)
7 {
8     printf("%d\\r\\n",HAL_ADC_GetValue(&hadc1));
9 }
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • adc
    adc
    +關注

    關注

    98

    文章

    6452

    瀏覽量

    544142
  • STM32
    +關注

    關注

    2266

    文章

    10876

    瀏覽量

    354915
  • dma
    dma
    +關注

    關注

    3

    文章

    559

    瀏覽量

    100445
  • AD轉換
    +關注

    關注

    3

    文章

    167

    瀏覽量

    45294
  • STM32F429
    +關注

    關注

    0

    文章

    40

    瀏覽量

    10648
收藏 人收藏

    評論

    相關推薦

    想在PWM的中點觸發ADC采樣,使用Cubemx配置一直實現不了,為什么?

    您好! 我現在遇到個問題,就是想在PWM的中點觸發ADC采樣,使用Cubemx配置一直實現不了,還請大神指點
    發表于 06-03 07:47

    轉:STM32CubeMX系列教程7:模數轉換(ADC)

    本章通過兩個例程介紹STM32的模數轉換器(ADC),第一個通過ADC采集內部溫度傳感器通道電壓,然后得出MCU內部溫度。第二個通過DMA的方式采集兩個
    發表于 07-02 17:03

    STM32CubeMX ADC規則通道輪詢轉換

    1.打開STM32CubeMX建立工程,(這里只介紹ADC配置,其他的不作介紹)。2.ADC3的通道配置,
    發表于 07-04 07:58

    STM32CubeMX配置ADC模擬看門狗實現掉電保存——基于(STM32G070+STM32CubeMX+HAL庫+ADC模擬看門狗) 精選資料分享

    實驗目的:通過STM32CubeMX進行簡單配置生成HAL庫實現ADC模擬看門狗,以達到單片機掉電保存Flash。一、STM32CubeMX
    發表于 08-02 06:05

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

    項目簡介任務:通過CubeMx實現ADC多通道掃描采集DMA方式(無中斷)采集內部溫度傳感器的溫度通道:采集A0、A1、A2、B0、B1端口電壓,采集內部溫度傳感器通道16、內部電壓通
    發表于 08-11 08:14

    STM32 HAL庫 CUBEMX配置 ADC采集 精選資料分享

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔文章目錄STM32 HAL庫 CUBEMX配置 ADC采集軟硬件型號1.單通道不定時任意時刻采集信號CUBEMX
    發表于 08-11 07:46

    如何對STM32cubemxADC進行配置

    DMA的中斷方式有哪幾種呢?如何對STM32cubemxADC進行配置呢?
    發表于 12-01 07:39

    如何使用STM32CubeMx配置ADC?

    如何使用STM32CubeMx配置ADC
    發表于 02-09 06:31

    CubeMX配置ADC出錯請大神指教

    將工作解決方案從 STM32L031 移植到 STM32G0B1 我嘗試在 CubeMX配置 ADC。這是一個非常簡單、典型的設置。3 個通道通過 DMA 以“一次性”模式轉換,由
    發表于 12-16 08:02

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

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

    STM32CubeMX配置ADC模擬看門狗實現掉電保存——基于(STM32G070+STM32CubeMX+HAL庫+ADC模擬看門狗)

    實驗目的:通過STM32CubeMX進行簡單配置生成HAL庫實現ADC模擬看門狗,以達到單片機掉電保存Flash。一、STM32CubeMX
    發表于 12-03 09:36 ?10次下載
    STM32<b class='flag-5'>CubeMX</b><b class='flag-5'>配置</b><b class='flag-5'>ADC</b>模擬看門狗<b class='flag-5'>實現</b>掉電保存——基于(STM32G070+STM32<b class='flag-5'>CubeMX</b>+HAL庫+<b class='flag-5'>ADC</b>模擬看門狗)

    2.使用cubemx配置stm32(二)__核心配置

    文章目錄使用cubemx配置stm32(二)__核心配置cubemx工程搭建實現單片機點燈程序CubeM
    發表于 12-27 18:48 ?0次下載
    2.使用<b class='flag-5'>cubemx</b><b class='flag-5'>配置</b>stm32(二)__核心<b class='flag-5'>配置</b>

    STM32 HAL庫 CUBEMX配置 ADC采集

    提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔文章目錄STM32 HAL庫 CUBEMX配置 ADC采集軟硬件型號1.單通道不定時任意時刻采集信號CUBEMX
    發表于 12-27 18:57 ?25次下載
    STM32 HAL庫 <b class='flag-5'>CUBEMX</b><b class='flag-5'>配置</b> <b class='flag-5'>ADC</b>采集

    STM32 HAL庫 CubeMX教程(七)ADC電壓采集串口輸出

    STM32 HAL庫 CubeMX教程(七)ADC電壓采集ADC簡介CubeMX配置ADC初始化
    發表于 01-12 20:24 ?45次下載
    STM32 HAL庫 <b class='flag-5'>CubeMX</b>教程(七)<b class='flag-5'>ADC</b>電壓采集串口輸出

    CubeMX配置RTC實現日歷和鬧鐘實驗

    CubeMX配置RTC實現日歷和鬧鐘實驗
    的頭像 發表于 02-15 14:05 ?1809次閱讀
    <b class='flag-5'>CubeMX</b><b class='flag-5'>配置</b>RTC<b class='flag-5'>實現</b>日歷和鬧鐘實驗