在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > STM32學(xué)習(xí)筆記之ADC--DMA方式

            STM32學(xué)習(xí)筆記之ADC--DMA方式

            作者: 時(shí)間:2016-11-28 來源:網(wǎng)絡(luò) 收藏
            程序功能是把ADC1模塊里通道14的輸入電壓轉(zhuǎn)換后通過USART2發(fā)送到PC,在PC機(jī)上用串口調(diào)試助手觀察接收數(shù)據(jù):

            本文引用地址:http://www.biyoush.com/article/201611/322988.htm

            STM32是12位ADC,測(cè)量結(jié)果基本還可以!程序用了DMA來傳輸ADC轉(zhuǎn)換值,調(diào)高了讀取速度。串口部分用是上一篇串口調(diào)試筆記里的代碼。


            #include
            #include

            #define ADC1_DR_Address((u32)0x4001244C)

            #ifdef __GNUC__

            #define PUTCHAR_PROTOTYPE int __io_putchar(int ch)
            #else
            #define PUTCHAR_PROTOTYPE int fputc(int ch, FILE *f)
            #endif

            vu16 ADC_ConvertedValue;

            void RCC_Config(void);
            void GPIO_Config(void);
            void USART_Config(void);
            void DMA_Config(void);
            void ADC_Config(void);
            void Put_String(u8 *p);
            void Delay(vu32 nCount);
            int main(void)
            {
            RCC_Config();
            GPIO_Config();
            USART_Config();
            DMA_Config();
            ADC_Config();


            while(1)
            {

            Delay(0x8FFFF);
            printf("ADC = %X Volt = %d mvrn", ADC_ConvertedValue, ADC_ConvertedValue*3300/4096);

            }
            }

            void RCC_Config(void)
            {
            ErrorStatus HSEStartUpStatus;//定義外部高速晶體啟動(dòng)狀態(tài)枚舉變量
            RCC_DeInit();//復(fù)位RCC外部設(shè)備寄存器到默認(rèn)值
            RCC_HSEConfig(RCC_HSE_ON); //打開外部高速晶振
            HSEStartUpStatus = RCC_WaitForHSEStartUp();//等待外部高速時(shí)鐘準(zhǔn)備好
            if(HSEStartUpStatus == SUCCESS)//外部高速時(shí)鐘已經(jīng)準(zhǔn)別好
            {

            RCC_HCLKConfig(RCC_SYSCLK_Div1);//配置AHB(HCLK)時(shí)鐘=SYSCLK
            RCC_PCLK2Config(RCC_HCLK_Div1); //配置APB2(PCLK2)鐘=AHB時(shí)鐘
            RCC_PCLK1Config(RCC_HCLK_Div2);//配置APB1(PCLK1)鐘=AHB 1/2時(shí)鐘
            RCC_ADCCLKConfig(RCC_PCLK2_Div4);//配置ADC時(shí)鐘=PCLK2 1/4

            RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_9);
            //配置PLL時(shí)鐘 == 外部高速晶體時(shí)鐘*9
            RCC_ADCCLKConfig(RCC_PCLK2_Div4);//配置ADC時(shí)鐘= PCLK2/4

            RCC_PLLCmd(ENABLE);//使能PLL時(shí)鐘
            while(RCC_GetFlagStatus(RCC_FLAG_PLLRDY) == RESET) //等待PLL時(shí)鐘就緒
            {
            }
            RCC_SYSCLKConfig(RCC_SYSCLKSource_PLLCLK);//配置系統(tǒng)時(shí)鐘 = PLL時(shí)鐘

            while(RCC_GetSYSCLKSource() != 0x08) //檢查PLL時(shí)鐘是否作為系統(tǒng)時(shí)鐘
            {
            }
            }
            RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA, ENABLE);//使能DMA時(shí)鐘
            RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 | RCC_APB2Periph_GPIOC, ENABLE);
            //使能ADC1,GPIOC時(shí)鐘
            RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD | RCC_APB2Periph_AFIO, ENABLE);
            //打開GPIOD和AFIO時(shí)鐘

            RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE);//使能串口2時(shí)鐘
            }

            void GPIO_Config(void)
            {
            //設(shè)置RTS(PD.04),Tx(PD.05)為推拉輸出模式
            GPIO_InitTypeDef GPIO_InitStructure; //定義GPIO初始化結(jié)構(gòu)體
            GPIO_PinRemapConfig(GPIO_Remap_USART2, ENABLE);//使能GPIO端口映射USART2
            GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4 | GPIO_Pin_5;//選擇PIN4 PIN5
            GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; //引腳頻率50M
            GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;//引腳設(shè)置推拉輸出
            GPIO_Init(GPIOD, &GPIO_InitStructure);//初始化GPIOD
            //配置CTS (PD.03),USART2 Rx (PD.06)為浮點(diǎn)輸入模式
            GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3 | GPIO_Pin_6;
            GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
            GPIO_Init(GPIOD, &GPIO_InitStructure);
            //配置PC4為模擬輸入
            GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
            GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
            GPIO_Init(GPIOC, &GPIO_InitStructure);

            }


            上一頁 1 2 下一頁

            評(píng)論


            技術(shù)專區(qū)

            關(guān)閉