久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 2418|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

STM32定時(shí)觸發(fā)ADC、DMA采樣 源程序

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:769641 發(fā)表于 2020-6-4 18:18 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
采用stm32f1開(kāi)發(fā)板,使用ADC的定時(shí)器觸發(fā)ADC轉(zhuǎn)換的功能,然后使用DMA進(jìn)行數(shù)據(jù)的搬運(yùn)。采用TIM2定時(shí)器的觸發(fā)間隔,實(shí)現(xiàn)ADC定時(shí)采樣轉(zhuǎn)換的功能,然后可以在程序的死循環(huán)中一直檢測(cè)DMA轉(zhuǎn)換完成標(biāo)志,然后進(jìn)行數(shù)據(jù)的讀取,或者使能DMA轉(zhuǎn)換完成中斷,這樣每次轉(zhuǎn)換完成就會(huì)產(chǎn)生中斷。

## 定時(shí)器2初始化函數(shù)
TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure;
TIM_OCInitTypeDef TIM_OCInitStructure;
TIM_TimeBaseStructure.TIM_Period = arr;   //設(shè)置在下一個(gè)更新事件裝入活動(dòng)的自動(dòng)重裝載寄存器周期的值
TIM_TimeBaseStructure.TIM_Prescaler =psc;    //設(shè)置用來(lái)作為T(mén)IMx時(shí)鐘頻率除數(shù)的預(yù)分頻值
TIM_TimeBaseStructure.TIM_ClockDivision = TIM_CKD_DIV1;   //設(shè)置時(shí)鐘分割:TDTS = Tck_tim
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;   //TIM向上計(jì)數(shù)模式
TIM_TimeBaseInit(TIM2, &TIM_TimeBaseStructure);   //根據(jù)指定的參數(shù)初始化TIMx的時(shí)間基數(shù)單位

TIM_OCInitStructure.TIM_OCMode = TIM_OCMode_PWM1;  //選擇定時(shí)器模式:TIM脈沖寬度調(diào)制模式1
TIM_OCInitStructure.TIM_OutputState = TIM_OutputState_Enable;  //比較輸出使能
TIM_OCInitStructure.TIM_Pulse = 1000;
TIM_OCInitStructure.TIM_OCPolarity = TIM_OCPolarity_Low;  //輸出極性:TIM輸出比較極性低
TIM_OC2Init(TIM2, & TIM_OCInitStructure);  //初始化外設(shè)TIM2_CH2
TIM_Cmd(TIM2, ENABLE);    //使能TIMx
TIM_CtrlPWMOutputs(TIM2, ENABLE);

## DMA配置
DMA_InitTypeDef DMA_InitStructure;
NVIC_InitTypeDef NVIC_InitStructure;
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1,ENABLE);      //使能ADC1通道時(shí)鐘

DMA_DeInit(DMA1_Channel1);
DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address;    //ADC1地址
DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)&ADC_ConvertedValue;   //內(nèi)存地址
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;     //方向(從外設(shè)到內(nèi)存)
DMA_InitStructure.DMA_BufferSize = 1;       //傳輸內(nèi)容的大小
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;   //外設(shè)地址固定
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;    //內(nèi)存地址固定
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord ; //外設(shè)數(shù)據(jù)單位
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord ;    //內(nèi)存數(shù)據(jù)單位
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular  ;   //DMA模式:循環(huán)傳輸
DMA_InitStructure.DMA_Priority = DMA_Priority_High ;   //優(yōu)先級(jí):高
DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;     //禁止內(nèi)存到內(nèi)存的傳輸
DMA_Init(DMA1_Channel1, &DMA_InitStructure);  //配置DMA1

DMA_ITConfig(DMA1_Channel1,DMA_IT_TC, ENABLE);  //使能傳輸完成中斷

NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 0;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

DMA_Cmd(DMA1_Channel1,ENABLE);

## GPIO配置
GPIO_InitTypeDef GPIO_InitStructure;

RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);   //使能GPIOA時(shí)鐘
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AIN;
GPIO_Init(GPIOA, &GPIO_InitStructure);  
## ADC初始化
ADC_InitTypeDef ADC_InitStructure;

TIM2_Init(30000,7199);  //72000000/7200=10000Hz,每3s采集一次
DMA1_Init();
ADC_GPIO_Configuration();  
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1, ENABLE);   //使能ADC1通道時(shí)鐘

ADC_InitStructure.ADC_Mode = ADC_Mode_Independent;    //獨(dú)立ADC模式
ADC_InitStructure.ADC_ScanConvMode = DISABLE;     //關(guān)閉掃描方式
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;   //關(guān)閉連續(xù)轉(zhuǎn)換模式
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T2_CC2;    //使用外部觸發(fā)模式
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;    //采集數(shù)據(jù)右對(duì)齊
ADC_InitStructure.ADC_NbrOfChannel = 1;    //要轉(zhuǎn)換的通道數(shù)目
ADC_Init(ADC1, &ADC_InitStructure);
  ## 注意事項(xiàng)
一定要在程序最前面定義ADC的采樣數(shù)據(jù)和地址
    volatile uint16_t ADC_ConvertedValue;   //ADC采樣的數(shù)據(jù)
    #define ADC1_DR_Address    ((u32)0x4001244C)  //ADC1的地址

全部資料51hei下載地址:
定時(shí)器觸發(fā)ADC實(shí)驗(yàn).7z (221.91 KB, 下載次數(shù): 48)

評(píng)分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:24685 發(fā)表于 2020-6-6 17:37 | 只看該作者
謝謝老大分享
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩午夜网站 | 涩在线 | 国产黄色大片 | 久久精品黄色 | 国产1区2区3区 | 久久久久久久久蜜桃 | 国产精品美女久久久久久久久久久 | 日韩欧美不卡 | 日本淫视频 | 亚洲精品美女视频 | 青青草在线视频免费观看 | 免费观看www | 精品美女 | 欧美男人天堂 | 久久久精品影院 | 亚洲电影一区 | 国产专区在线 | 成人小视频在线观看 | 日韩成人性视频 | 日本五月婷婷 | 91成人免费| 国产精品99久久久久久www | av大全在线观看 | 黄色毛片一级 | 一道本不卡 | 欧美日韩手机在线观看 | 国产1区| 中文字幕一区二区三区四区 | 免费精品视频在线观看 | 精品久久精品 | 性色av一区二区三区 | 9久久精品| 欧美日韩一区二区三区四区 | 欧美成人精品欧美一级 | 久久精品视频在线免费观看 | 在线观看国产www | 欧美日一区二区 | 亚洲美乳中文字幕 | 欧美日韩高清在线一区 | 欧美成人a∨高清免费观看 欧美日韩中 | 在线永久看片免费的视频 |