色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

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

GD32F303固件庫(kù)開(kāi)發(fā)(11)----ADC在DMA模式下掃描多個(gè)通道

嵌入式單片機(jī)MCU開(kāi)發(fā) ? 來(lái)源:嵌入式單片機(jī)MCU開(kāi)發(fā) ? 作者:嵌入式單片機(jī)MCU開(kāi) ? 2022-11-30 11:38 ? 次閱讀

概述

本章主要配置,ADCDMA模式下掃描多個(gè)通道,通過(guò)串口進(jìn)行打印。 查閱手冊(cè)可以得知,PA9、PA10為串口0的輸出和輸入口。 需要GD樣片的可以加群申請(qǐng):615061293 。

在這里插入圖片描述

ADC通道配置

在這里插入圖片描述

硬件準(zhǔn)備

這里準(zhǔn)備了1塊開(kāi)發(fā)板進(jìn)行驗(yàn)證,分別是GD32303C_START開(kāi)發(fā)板。

在這里插入圖片描述

keil配置

microlib 進(jìn)行了高度優(yōu)化以使代碼變得很小。 它的功能比缺省 C 庫(kù)少,并且根本不具備某些 ISO C 特性。 某些庫(kù)函數(shù)的運(yùn)行速度也比較慢,如果要使用printf(),必須開(kāi)啟。

在這里插入圖片描述

使能串口

/* 使能GPI0A,用PA9、PA10為串口 */
    rcu_periph_clock_enable(RCU_GPIOA);

    /*使能串口0的時(shí)鐘 */
    rcu_periph_clock_enable(RCU_USART0);

    /*配置USARTx_Tx(PA9)為復(fù)用推挽輸出*/
    gpio_init(GPIOA, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_9);

    /*配置USARTx_RxPA9)為浮空輸入 */
    gpio_init(GPIOA, GPIO_MODE_IN_FLOATING, GPIO_OSPEED_50MHZ, GPIO_PIN_10);

    /* USART 配置 */
    usart_deinit(USART0);//重置串口0
    usart_baudrate_set(USART0, 115200U);//設(shè)置串口0的波特率為115200
    usart_word_length_set(USART0, USART_WL_8BIT);          // 幀數(shù)據(jù)字長(zhǎng)
        usart_stop_bit_set(USART0, USART_STB_1BIT);               // 停止位1位
    usart_parity_config(USART0, USART_PM_NONE);           // 無(wú)奇偶校驗(yàn)位
    usart_receive_config(USART0, USART_RECEIVE_ENABLE);//使能接收器
    usart_transmit_config(USART0, USART_TRANSMIT_ENABLE);//使能發(fā)送器
    usart_enable(USART0);//使能USART

串口重定向

/* retarget the C library printf function to the USART */
int fputc(int ch, FILE *f)
{
    usart_data_transmit(USART0, (uint8_t)ch);
    while(RESET == usart_flag_get(USART0, USART_FLAG_TBE));
    return ch;
}

串口重定向后就可以使用printf進(jìn)行打印。

ADC通道設(shè)置

在這里插入圖片描述

DMA設(shè)置

在這里插入圖片描述

ADC0初始化

void rcu_config(void)
{
    /*使能GPIOA時(shí)鐘 */
    rcu_periph_clock_enable(RCU_GPIOA);
    /* 使能ADC時(shí)鐘 */
    rcu_periph_clock_enable(RCU_ADC0);
    /* 使能DMA0時(shí)鐘 */
    rcu_periph_clock_enable(RCU_DMA0);
    /* 配置ADC速率 */
    rcu_adc_clock_config(RCU_CKADC_CKAPB2_DIV6);
}

GPIO初始化

void gpio_config(void)
{
    /* config the GPIO as analog mode */
    gpio_init(GPIOA, GPIO_MODE_AIN, GPIO_OSPEED_10MHZ, GPIO_PIN_0);
    gpio_init(GPIOA, GPIO_MODE_AIN, GPIO_OSPEED_10MHZ, GPIO_PIN_1);
    gpio_init(GPIOA, GPIO_MODE_AIN, GPIO_OSPEED_10MHZ, GPIO_PIN_2);
    gpio_init(GPIOA, GPIO_MODE_AIN, GPIO_OSPEED_10MHZ, GPIO_PIN_3);
}

ADC0配置

void adc_config(void)
{

        adc_deinit(ADC0);
    /* ADC mode config */
    adc_mode_config(ADC_MODE_FREE); 
    /* 開(kāi)啟連續(xù)轉(zhuǎn)換 */
    adc_special_function_config(ADC0, ADC_CONTINUOUS_MODE, ENABLE);
    /* 開(kāi)啟掃描模式 */
    adc_special_function_config(ADC0, ADC_SCAN_MODE, ENABLE);
    /*數(shù)據(jù)右對(duì)齊 */
    adc_data_alignment_config(ADC0, ADC_DATAALIGN_RIGHT);

    /* ADC channel length config */
    adc_channel_length_config(ADC0, ADC_REGULAR_CHANNEL, 4);

    /* ADC regular channel config */ 
    adc_regular_channel_config(ADC0, 0, ADC_CHANNEL_0, ADC_SAMPLETIME_55POINT5);
    adc_regular_channel_config(ADC0, 1, ADC_CHANNEL_1, ADC_SAMPLETIME_55POINT5);
    adc_regular_channel_config(ADC0, 2, ADC_CHANNEL_2, ADC_SAMPLETIME_55POINT5);
    adc_regular_channel_config(ADC0, 3, ADC_CHANNEL_3, ADC_SAMPLETIME_55POINT5);

    /* ADC 軟件觸發(fā)(規(guī)則組) */
    adc_external_trigger_source_config(ADC0, ADC_REGULAR_CHANNEL, ADC0_1_2_EXTTRIG_REGULAR_NONE);
    adc_external_trigger_config(ADC0, ADC_REGULAR_CHANNEL, ENABLE);

    /* ADC DMA function enable */
    adc_dma_mode_enable(ADC0);
    /* enable ADC interface */
    adc_enable(ADC0);


    /* ADC校準(zhǔn)和復(fù)位校準(zhǔn) */
    adc_calibration_enable(ADC0);
}

DMA0初始化

void dma_config(void)
{
    /* ADC_DMA_channel configuration */
    dma_parameter_struct dma_data_parameter;

    /*  ADC DMA0_0初始化 */
    dma_deinit(DMA0, DMA_CH0);

    /* initialize DMA single data mode */
    dma_data_parameter.periph_addr  = (uint32_t)(&ADC_RDATA(ADC0));//外設(shè)基地址
    dma_data_parameter.periph_inc   = DMA_PERIPH_INCREASE_DISABLE;//內(nèi)存地址增量模式
    dma_data_parameter.memory_addr  = (uint32_t)(&ADC0_Value);//數(shù)據(jù)存放地址
    dma_data_parameter.memory_inc   = DMA_MEMORY_INCREASE_ENABLE;//內(nèi)存地址增量模式
    dma_data_parameter.periph_width = DMA_PERIPHERAL_WIDTH_16BIT;//dma外設(shè)寬度16位,半字
    dma_data_parameter.memory_width = DMA_MEMORY_WIDTH_16BIT;  
    dma_data_parameter.direction    = DMA_PERIPHERAL_TO_MEMORY;//傳輸模式,外設(shè)到存儲(chǔ)(接收)
    dma_data_parameter.number       = 40;//長(zhǎng)度
    dma_data_parameter.priority     = DMA_PRIORITY_HIGH;//優(yōu)先級(jí)高
    dma_init(DMA0, DMA_CH0, &dma_data_parameter);

    dma_circulation_disable(DMA0, DMA_CH0);//循環(huán)模式開(kāi)啟dma_circulation_enable(DMA0, DMA_CH0)//dma_circulation_disable

        /* enable DMA transfer complete interrupt */
    dma_interrupt_enable(DMA0, DMA_CH0, DMA_INT_FTF);    //打開(kāi)全部完成中斷
    /* enable DMA channel */
    dma_channel_enable(DMA0, DMA_CH0);    /* DMA內(nèi)存到內(nèi)存模式不開(kāi)啟 */
}

DMA0_Channel0_IRQHandler()

void DMA0_Channel0_IRQHandler(void)
{
  if(dma_interrupt_flag_get(DMA0, DMA_CH0, DMA_INT_FLAG_FTF)==SET)
  {     
        dma_interrupt_flag_clear(DMA0, DMA_CH0, DMA_FLAG_FTF);//清除DMA通道傳輸完成標(biāo)志
        dma_channel_disable(DMA0, DMA_CH0);

        ADC0_Flag=1;
  }
}

初始化定義

/* system clocks configuration */
    rcu_config();
    nvic_irq_enable(DMA0_Channel0_IRQn, 0, 0);
    /* GPIO configuration */
    gpio_config();
    /* DMA configuration */
    dma_config();
    /* ADC configuration */
    adc_config();
        /* ADC software trigger enable */
    adc_software_trigger_enable(ADC0, ADC_REGULAR_CHANNEL);

數(shù)據(jù)采集

while (1)
        {
            if(ADC0_Flag==1)
            {
                ADC0_0=0;
                ADC0_1=0;
                ADC0_2=0;
                ADC0_3=0;
                for(i=0;i<40;)
                {
                    ADC0_0+=ADC0_Value[i++];
                    ADC0_1+=ADC0_Value[i++];
                    ADC0_2+=ADC0_Value[i++];
                    ADC0_3+=ADC0_Value[i++];
                }        
          printf("\\n");
          printf("adc1_IN0(PA0)=%4.0d,ADC_IN0=%1.4f\\r\\n",ADC0_0/10,ADC0_0/10*3.3f/4096);
          printf("adc1_IN1(PA1)=%4.0d,ADC_IN1=%1.4f\\r\\n",ADC0_1/10,ADC0_1/10*3.3f/4096);
          printf("adc1_IN2(PA2)=%4.0d,ADC_IN2=%1.4f\\r\\n",ADC0_2/10,ADC0_2/10*3.3f/4096);
          printf("adc1_IN3(PA3)=%4.0d,ADC_IN3=%1.4f\\r\\n",ADC0_3/10,ADC0_3/10*3.3f/4096);
            ADC0_Flag=0;
        adc_config();    
        dma_memory_address_config(DMA0, DMA_CH0, (uint32_t)(&ADC0_Value));
        dma_transfer_number_config(DMA0, DMA_CH0, 40);        
        dma_channel_enable(DMA0, DMA_CH0);
        adc_software_trigger_enable(ADC0, ADC_REGULAR_CHANNEL);            

            }
      delay_1ms(1000);
    }

測(cè)試結(jié)果

輸入固定電壓進(jìn)行測(cè)試。

在這里插入圖片描述

測(cè)試結(jié)果如下。

在這里插入圖片描述
審核編輯:湯梓紅

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

    關(guān)注

    98

    文章

    6507

    瀏覽量

    544910
  • dma
    dma
    +關(guān)注

    關(guān)注

    3

    文章

    562

    瀏覽量

    100635
  • 固件庫(kù)
    +關(guān)注

    關(guān)注

    2

    文章

    97

    瀏覽量

    14954
  • gd32f303
    +關(guān)注

    關(guān)注

    4

    文章

    38

    瀏覽量

    3694
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    STM32CUBEMX開(kāi)發(fā)GD32F303(9)----USART通過(guò)DMA收發(fā)

    概述 本章STM32CUBEMX配置STM32F103,并且GD32F303中進(jìn)行開(kāi)發(fā),同時(shí)通過(guò)GD32303C_START
    的頭像 發(fā)表于 11-29 11:15 ?2147次閱讀
    STM32CUBEMX<b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>GD32F303</b>(9)----USART通過(guò)<b class='flag-5'>DMA</b>收發(fā)

    GD32F303固件庫(kù)開(kāi)發(fā)(14)----IIC之配置OLED

    本章配置GD32F303使用IIC進(jìn)行驅(qū)動(dòng)SSD1306的12864OLED。
    的頭像 發(fā)表于 07-26 08:55 ?3760次閱讀
    <b class='flag-5'>GD32F303</b><b class='flag-5'>固件</b><b class='flag-5'>庫(kù)</b><b class='flag-5'>開(kāi)發(fā)</b>(14)----IIC之配置OLED

    GD32F303】星空派介紹

    GD32官方資料的基礎(chǔ)上,提供GD32F303的庫(kù)函數(shù)開(kāi)發(fā)資料、例程講解、視頻課程等。同時(shí)還提供RT-Thread相關(guān)的驅(qū)動(dòng)開(kāi)發(fā)、應(yīng)用開(kāi)發(fā)、
    發(fā)表于 09-11 17:55

    GD32F30x系列固件庫(kù)

    GD32F30x系列固件庫(kù)包含GD32F303、GD32F305、GD32F307三個(gè)系列的最新
    發(fā)表于 08-21 09:00 ?166次下載

    GD32F303固件庫(kù)開(kāi)發(fā)(3)----使用固件庫(kù)點(diǎn)亮LED

    概述 GD的官網(wǎng)中有許多的DEMO文件,可以使用開(kāi)發(fā)板的案例或者對(duì)應(yīng)的MCU標(biāo)準(zhǔn)固件庫(kù)。需要樣片的可以加群申請(qǐng):6_15061293。 下
    的頭像 發(fā)表于 11-23 17:36 ?2916次閱讀
    <b class='flag-5'>GD32F303</b><b class='flag-5'>固件</b><b class='flag-5'>庫(kù)</b><b class='flag-5'>開(kāi)發(fā)</b>(3)----使用<b class='flag-5'>固件</b><b class='flag-5'>庫(kù)</b>點(diǎn)亮LED

    GD32F303固件庫(kù)開(kāi)發(fā)(5)----GPIO輸出模式,速率測(cè)試、開(kāi)漏和輸出說(shuō)明

    以STM32CUBEMX創(chuàng)建STM32F103工程,同時(shí)移植GD32F303中,同時(shí)通過(guò)GD32303C_START開(kāi)發(fā)板內(nèi)進(jìn)行驗(yàn)證。
    的頭像 發(fā)表于 11-25 15:32 ?3201次閱讀
    <b class='flag-5'>GD32F303</b><b class='flag-5'>固件</b><b class='flag-5'>庫(kù)</b><b class='flag-5'>開(kāi)發(fā)</b>(5)----GPIO輸出<b class='flag-5'>模式</b>,速率測(cè)試、開(kāi)漏和輸出說(shuō)明

    STM32CUBEMX開(kāi)發(fā)GD32F303(10)----雙ADC輪詢(xún)模式掃描多個(gè)通道

    本章STM32CUBEMX配置STM32F103,并且GD32F303中進(jìn)行開(kāi)發(fā),同時(shí)通過(guò)GD32303C_START
    的頭像 發(fā)表于 11-29 17:38 ?1851次閱讀
    STM32CUBEMX<b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>GD32F303</b>(10)----雙<b class='flag-5'>ADC</b>輪詢(xún)<b class='flag-5'>模式</b><b class='flag-5'>掃描</b><b class='flag-5'>多個(gè)</b><b class='flag-5'>通道</b>

    GD32F303固件庫(kù)開(kāi)發(fā)(10)----雙ADC輪詢(xún)模式掃描多個(gè)通道

    本章主要配置,雙ADC輪詢(xún)模式掃描多個(gè)通道,通過(guò)串口進(jìn)行打印。 查閱手冊(cè)可以得知,PA9、PA10為串口0的輸出和輸入口。 查閱手冊(cè)可以得知
    的頭像 發(fā)表于 11-30 09:48 ?2147次閱讀
    <b class='flag-5'>GD32F303</b><b class='flag-5'>固件</b><b class='flag-5'>庫(kù)</b><b class='flag-5'>開(kāi)發(fā)</b>(10)----雙<b class='flag-5'>ADC</b>輪詢(xún)<b class='flag-5'>模式</b><b class='flag-5'>掃描</b><b class='flag-5'>多個(gè)</b><b class='flag-5'>通道</b>

    STM32CUBEIDE(10)----ADCDMA模式掃描多個(gè)通道

    本章STM32CUBEMX配置STM32F103的ADCDMA模式掃描
    的頭像 發(fā)表于 11-30 09:54 ?2338次閱讀
    STM32CUBEIDE(10)----<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'>掃描</b><b class='flag-5'>多個(gè)</b><b class='flag-5'>通道</b>

    STM32CUBEMX開(kāi)發(fā)GD32F30311)----ADCDMA模式掃描多個(gè)通道

    本章STM32CUBEMX配置STM32F103,并且GD32F303中進(jìn)行開(kāi)發(fā),同時(shí)通過(guò)GD32303C_START
    的頭像 發(fā)表于 11-30 10:59 ?2401次閱讀
    STM32CUBEMX<b class='flag-5'>開(kāi)發(fā)</b><b class='flag-5'>GD32F303</b>(<b class='flag-5'>11</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'>掃描</b><b class='flag-5'>多個(gè)</b><b class='flag-5'>通道</b>

    GD32F303固件庫(kù)開(kāi)發(fā)(12)----輸出PWM及修改PWM頻率與占空比

    本章STM32CUBEMX配置STM32F103,并且GD32F303中進(jìn)行開(kāi)發(fā),同時(shí)通過(guò)開(kāi)發(fā)板內(nèi)進(jìn)行驗(yàn)證。 本章主要配置定時(shí)器輸出PWM
    的頭像 發(fā)表于 11-30 15:36 ?9402次閱讀
    <b class='flag-5'>GD32F303</b><b class='flag-5'>固件</b><b class='flag-5'>庫(kù)</b><b class='flag-5'>開(kāi)發(fā)</b>(12)----輸出PWM及修改PWM頻率與占空比

    AN029 GD32F103程序GD32F303GD32F403芯片上運(yùn)行DSP

    AN029 GD32F103程序GD32F303GD32F403芯片上運(yùn)行DSP
    發(fā)表于 02-27 18:33 ?0次下載
    AN029 <b class='flag-5'>GD32F</b>103程序<b class='flag-5'>在</b><b class='flag-5'>GD32F303</b>和<b class='flag-5'>GD32F</b>403芯片上運(yùn)行DSP

    GD32F303固件庫(kù)開(kāi)發(fā)(15)----外部中斷EXTI

    本章配置GD32F303使用EXTI進(jìn)行驅(qū)動(dòng)LED。
    的頭像 發(fā)表于 07-26 15:56 ?1539次閱讀
    <b class='flag-5'>GD32F303</b><b class='flag-5'>固件</b><b class='flag-5'>庫(kù)</b><b class='flag-5'>開(kāi)發(fā)</b>(15)----外部中斷EXTI

    GD32F303固件庫(kù)開(kāi)發(fā)

    的可以加群申請(qǐng):615061293 。 GD32F303固件庫(kù)開(kāi)發(fā)(1)----前期準(zhǔn)備與燒錄 使用GDLINK、jlink、串口下載程序到GD
    的頭像 發(fā)表于 07-27 09:27 ?1193次閱讀
    <b class='flag-5'>GD32F303</b><b class='flag-5'>固件</b><b class='flag-5'>庫(kù)</b><b class='flag-5'>開(kāi)發(fā)</b>

    GD32F303紅楓派開(kāi)發(fā)板使用手冊(cè)】第十六講 USART-DMA串口收發(fā)實(shí)驗(yàn)

    在前面ADC章節(jié)中,我們介紹了DMA的工作原理,這里就不多做介紹。從GD32F303用戶手冊(cè)中可以查到,各串口的TX和RX分別對(duì)應(yīng)DMA的不同通道
    的頭像 發(fā)表于 06-15 09:54 ?1122次閱讀
    【<b class='flag-5'>GD32F303</b>紅楓派<b class='flag-5'>開(kāi)發(fā)</b>板使用手冊(cè)】第十六講 USART-<b class='flag-5'>DMA</b>串口收發(fā)實(shí)驗(yàn)
    主站蜘蛛池模板: 一本之道高清视频在线观看| 久久精品电影久久电影大全| 国产亚洲精品久久综合阿香| 久久这里只精品热在线99| 三级网址在线播放| 浴室里强摁做开腿呻吟的漫画男男| 岛国大片在线播放高清| 久久五月综合婷婷中文云霸高清| 歪歪爽蜜臀AV久久精品人人槡| 91精品专区| 狠狠色狠狠色综合曰曰| 日本浴室日产在线系列| 中文无码乱人伦中文视频播放| 国产精品2020观看久久| 男人到天堂a在538线| 亚洲日本一区二区三区在线不卡| 岛国大片在线播放高清| 男女疯狂一边摸一边做羞羞视频| 亚洲精品午睡沙发系列| 囯产精品麻豆巨作久久| 男人叼女人| 影音先锋色小姐| 国产又粗又猛又爽黄老大爷| 日本学生VIDEOVIDEOS更新| 131美女爱做视频午夜剧场 | 打开双腿狠狠蹂躏蜜桃臀| 麻1豆传媒2021精品| 亚洲午夜精品一区二区公牛电影院| 国产精品第一综合首页| 日本19禁啪啪吃奶大尺度| 91黄色影院| 久久精品国产eeuss| 亚洲精品永久免费| 国产精品久久久精品a级小说| 求个av网站| 99视频精品国产免费观看| 狂操空姐电影| 伊人影院网| 精品国产乱码久久久久久下载| 性白俄罗斯高清xxxxx| 国产国语在线播放视频|