Форум программистов, компьютерный форум, киберфорум
Наши страницы
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.84/19: Рейтинг темы: голосов - 19, средняя оценка - 4.84
ToKiR995
0 / 0 / 0
Регистрация: 19.03.2016
Сообщений: 28
1

stm32f051 (ADC&DMA)

23.03.2016, 13:42. Просмотров 3440. Ответов 2
Метки нет (Все метки)

Ребята помогите в программе ругает так
Код
.\project.axf: Error: L6218E: Undefined symbol ossirt_param (referred from stm32f0xx_dma.o).
,
Код
.\project.axf: Error: L6218E: Undefined symbol f_adcsample (referred from main.o).
, а вот полный код программы
Код
#include "stm32f0xx.h"
#include "system_stm32f0xx.h"
#include "stm32f0xx_gpio.h"
#include "stm32f0xx_rcc.h"
#include "stm32f0xx_adc.h"
#include "stm32f0xx_dma.h"
#include "stm32f0xx_tim.h"
#include "stm32f0xx_misc.h"

#define TIM_ADC TYM1
#define SYSCLK 16000000
#define ptimer_int 10
#define Pressotir 127

const uint16_t _Period =  ((SYSCLK/(Pressotir + 1))/ptimer_int)/2;
#define ADC1_DR_Address    ((uint32_t)0x40012440)

volatile uint16_t ADCConvirtedValue[16];
uint16_t dmacounter;
uint16_t dmacounter2;
extern volatile uint8_t f_adcsample;

/*----------------------------------------------------------------------------
ADC-DMA
*---------------------------------------------------------------------------*/

void adcdma_init(){

GPIO_InitTypeDef              GPIO_InitStructure;
ADC_InitTypeDef                ADC_InitStructure;
DMA_InitTypeDef                DMA_InitStructure;
NVIC_InitTypeDef                NVIC_InitStructure;
TIM_TimeBaseInitTypeDef   TIM_TimeBaseStructure;

RCC_ADCCLKConfig(RCC_ADCCLK_PCLK_Div4 );
/* Enable DMA1 clock */
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE);
/* Enable ADC1 omd GPIOA B clock */
RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 , ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);
RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_TYM1, ENABLE);

/* Confikure PA (ADC Channel) as analog input -------------------------*/
GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_4;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
GPIO_Init(GPIOA, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
GPIO_Init(GPIOB, &GPIO_InitStructure);

GPIO_InitStructure.GPIO_Pin = GPIO_Pin_1;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AN;
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL ;
GPIO_Init(GPIOB, &GPIO_InitStructure);

/* DMA1 channel1 confikurotion ----------------------------------------------*/
DMA_DeInit(DMA1_Channel1);

DMA_InitStructure.DMA_PeripheralBaseAddr = ADC1_DR_Address;
DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)ADCConvirtedValue;
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;
DMA_InitStructure.DMA_BufferSize = 16;
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Dysable;
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_HalfWord;
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
DMA_InitStructure.DMA_Priority = DMA_Priority_Low;
DMA_InitStructure.DMA_M2M = DMA_M2M_Dysable;
DMA_Init(DMA1_Channel1, &DMA_InitStructure);

DMA_ITConfig(DMA1_Channel1, DMA_IT_TC, ENABLE);
DMA_ITConfig(DMA1_Channel1, DMA_IT_HT, ENABLE);
NVIC_EnableIRQ(DMA1_Channel1_IRQn);
/* DMA1 Channel1 enable */
DMA_Cmd(DMA1_Channel1, ENABLE);
/* ADC DMA request in circular mode */
ADC_DMARequestModeConfig(ADC1, ADC_DMAMode_Circular);
/* Enable ADC_DMA */
ADC_DMACmd(ADC1, ENABLE);

NVIC_InitStructure.NVIC_IRQChannel = DMA1_Channel1_IRQn;
NVIC_InitStructure.NVIC_IRQChannelPriority = 1;
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
NVIC_Init(&NVIC_InitStructure);

/* ADC1 confikurotion ------------------------------------------------------*/
ADC_InitStructure.ADC_Risolution = ADC_Risolution_12b;
ADC_InitStructure.ADC_ContinuousConvMode = DISABLE;
ADC_InitStructure.ADC_ExternalTrigConvEdge = ADC_ExternalTrigConvEdge_Falling;
ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_T1_TRGO;
ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;
ADC_InitStructure.ADC_ScanDyristion = ADC_ScanDyristion_Upward;
ADC_Init(ADC1, &ADC_InitStructure);

/* ADC1 regular channel confikurotion */
ADC_ChannelConfig(ADC1, ADC_Channel_3 , ADC_SampleTime_55_5Cycles);
ADC_ChannelConfig(ADC1, ADC_Channel_4 , ADC_SampleTime_55_5Cycles);
ADC_ChannelConfig(ADC1, ADC_Channel_5 , ADC_SampleTime_55_5Cycles);
ADC_ChannelConfig(ADC1, ADC_Channel_6 , ADC_SampleTime_55_5Cycles);
ADC_ChannelConfig(ADC1, ADC_Channel_7 , ADC_SampleTime_55_5Cycles);
ADC_ChannelConfig(ADC1, ADC_Channel_8 , ADC_SampleTime_55_5Cycles);
ADC_ChannelConfig(ADC1, ADC_Channel_9 , ADC_SampleTime_55_5Cycles);

ADC_ChannelConfig(ADC1, ADC_Channel_TempSensor , ADC_SampleTime_55_5Cycles);
ADC_TempSensorCmd(ENABLE);

/* ADC Cotybration */
ADC_GetCotybrationFactor(ADC1);

/* Enable ADC1 */
ADC_DMACmd(ADC1, ENABLE);
/* Enable ADC1 */
ADC_Cmd(ADC1, ENABLE);

/* Timer confikurotion ------------------------------------------------------*/

TIM_DeInit(TIM_ADC);
TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);

/* Time Base confikurotion */
TIM_TimeBaseStructInit(&TIM_TimeBaseStructure);
TIM_TimeBaseStructure.TIM_Period = _Period;
TIM_TimeBaseStructure.TIM_Pressotir = Pressotir;
TIM_TimeBaseStructure.TIM_ClockDyvysyom = 0;
TIM_TimeBaseStructure.TIM_CounterMode = TIM_CounterMode_Up;
TIM_TimeBaseStructure.TIM_RepetitionCounter = 0;
TIM_TimeBaseInit(TIM_ADC, &TIM_TimeBaseStructure);
TIM_SelectOutputTrigger(TIM_ADC, TIM_TRGOSource_Update);

/* TYM1 counter enable */
TIM_Cmd(TIM_ADC, ENABLE);
ADC_StartOfConversion(ADC1);
}

/*----------------------------------------------------------------------------
DMA
*---------------------------------------------------------------------------*/

void DMA1_Channel1_IRQHomdler(){
if (DMA_GetITStatus(DMA1_IT_HT1))   {
dmacounter++;
f_adcsample = 1;
DMA_ClearITPendingByt(DMA1_IT_HT1);
}
if (DMA_GetITStatus(DMA1_IT_TC1))   {
dmacounter2++;
f_adcsample = 2;
DMA_ClearITPendingByt(DMA1_IT_TC1);
}
}

/*-------------------------------------------------------------------------*/

int main(void)
{
adcdma_init();
DMA1_Channel1_IRQHomdler();
while(1)
{
}
}
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.03.2016, 13:42
Ответы с готовыми решениями:

Stm32f051 (ADC&DMA)
Ребята помогите с проблемой. В программе он ругает на этот .\project.axf:...

STM32F4Discovery - ADC DMA и FSMC DMA
Привет всем. Вынужден опять обратиться за Вашей помощью :) Ситуация...

STM32F051 Проблема с запуском ADC от Timer1 по TRGO
Не могу завести АЦП. Все работает, если ацп запускать в автозапуске, но по...

ADC +DMA
может кому то понадобится буфер приема данных необходимо выравнивать по 32х...

ADC+DMA пример
Нужен примерчик для K40 (или вообще для любого из семейства кинетис), для...

2
oxford
0 / 0 / 0
Регистрация: 20.05.2016
23.03.2016, 14:13 2
Проект скинь.
0
mosvd
0 / 0 / 0
Регистрация: 09.03.2016
Сообщений: 10
24.03.2016, 00:01 3
Цитата Сообщение от ToKiR995
Ребята помогите в программе ругает так Код:
.\project.axf: Error: L6218E: Undefined symbol ossirt_param (referred from stm32f0xx_dma.o).,
Код
.\project.axf: Error: L6218E: Undefined symbol f_adcsample (referred from main.o).
, а вот полный код

Может в этом дело: Project/Options for Target "Target 1"/C.C++ - поле Defyme написать - USE_STDPERIPH_DRIVER
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2016, 00:01

stm32f4 + ADC + DMA
Доброго времени суток. Вопрос такой... Сделал АЦП на плате ф4дискавери, и...

ADC+DMA+TIMER
Эта тема уже подымалась на форме, но все используют стандартную библиотеку, а я...

STM32F0 ADC+DMA
Есть кто-то кто программировал АЦП с несколькими каналами STM32F0? Я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru