Перейти к содержанию
    

STM32F0+Keil=простой старт

Вроде разобрался, только не пойму почему "ворнинг" выскакивает...

 

 

..\Source\stm32f0xx_it.c(104): warning: #223-D: function "indication_func" declared implicitly

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день.

У меня проблема с использованием adc, микросхема - STM32F050F4, измерение не происходит.

В KEIL могу выбрать для ADC только регистр CCR (ADC->CCR) зато для ADC1 доступны регистры все

// Включить тактирование порта B
RCC->AHBENR |= RCC_AHBENR_GPIOBEN;
// Вывод 1 на аналоговый вход
GPIOB->MODER |= GPIO_MODER_MODER1;


// Настройк ADC
ADC1->CR |=  ADC_CR_ADEN;
ADC1->CFGR2 |= ADC_CFGR2_JITOFFDIV2;

ADC1->CHSELR |= ADC_CHSELR_CHSEL9;

И при отладке в железе видно, что регистры не записываются в нужные значения

 

// Главный цикл
int main(void)
{
    SysTick_Config(48000);
    while(1)
    {
     ADC1->CR |= ADC_CR_ADSTART;
        i=100;
    while(i);
        
        c=((ADC1->DR)>8);
        
        f[2]=c/100%10;
        f[1]=c/10%10;
        f[0]=c%10;
    }
}
//Обработчик прерывания системного таймера - индикация 
void SysTick_Handler(void)
{
if(i)i--;
    c_i++;
    if(c_i==3) c_i=0;
        
GPIOA->BSRR = 0xffff0000; // сброс
GPIOA->BSRR = ((mask_led[f[c_i]])&0xff) | mask_ind[c_i];
return; 
}

Проясните пожалуйста:

Что значит ADC1 и чем оно отличается от ADC ?

Каким образом мне записывать значения в регистры, так, чтоб они отображались и работали?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Добрый день.

У меня проблема с использованием adc, микросхема - STM32F050F4, измерение не происходит.

...

И при отладке в железе видно, что регистры не записываются в нужные значения

...

Каким образом мне записывать значения в регистры, так, чтоб они отображались и работали?

А тактирование АЦП включили? Нужную тактовую частоту подали?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А тактирование АЦП включили? Нужную тактовую частоту подали?

По умолчанию тактирование включено от асинхронного собственного генератора 14 МГц.

Также пробовал подключать такты к шине AHB/2, эффект точно такой же.

ADC1->CFGR2 |= ADC_CFGR2_JITOFFDIV2;

Проблема в том, что не записываются данные в регистры ADC после выполнения строк кода. Ни в режиме симулятора, ни в дебаге железа.

ADC1->CR |=  ADC_CR_ADEN;
ADC1->CFGR2 |= ADC_CFGR2_JITOFFDIV2;

Проверял пути к адресам flash, начало ADC1 - 0x40012400. Соответствует документации. Битовые маски тоже годные.

 

Регистры портов и тактирования записываются корректно. Индикация работает, при записи в переменную "с" константы, она выводится.

 

Подозреваю проблема с настройками библиотек. Нужно ли их настраивать, если да, то каким образом ?

Прикрепил проект полностью

prj_stm32f05.zip

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Всем спасибо за участие, проблему решил. Оказалось нужно дополнительно включить такты на управление регистрами ADC

RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;

Теперь все в порядке

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Оказалось нужно дополнительно включить такты на управление регистрами ADC

Также, как и для всех других периферийных устройств. Если не работают - проверяйте тактирование в первую очередь.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Здравствуйте. Вопрос по прерыванию готовности результата группы измерений АЦП

 

Не могу найти данный обработчик в серии F0.

Стоит задача запустить группу преобразований и отправить через DMA обработать прерывание по окончанию преобразования группы измерений.

Каким образом вызвать такое прерывание если в списке векторов прерывания в библиотеке нашел только вызов оконного :

ADC1_COMP_IRQn              = 12,     /*!< ADC1, COMP1 and COMP2 Interrupts                        */

Образцы работы с ADC + DMA есть для другой f10x серии, но там в библиотеке обработчик описан, а тут нет

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

вСЕМ ПРИВЕТ!

я начинаю изучать stm 32 f0 и вот возник вопрос,итак внимание: объясните в чем вызвана разница в синтаксисе(в том числе во включение тактирования портов)

пример 1

// Включить тактирование порта C

RCC->AHBENR |= RCC_AHBENR_GPIOCEN;

 

// 9, 10 выводы - на выход (general purpose output mode)

GPIOC->MODER |= GPIO_MODER_MODER9_0 | GPIO_MODER_MODER10_0;

 

 

пример 2

GPIO_InitTypeDef GPIO_InitStruct_butt;

GPIO_InitTypeDef GPIO_InitStruct_led;

 

/*Enable or disable the AHB peripheral clock */

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOA, ENABLE);

RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOC, ENABLE);

 

вроде бы одно и тоже,но написано чуть по разному,тут мелькают практически все сообщения со вторым вариантом написания, первый вариант накопал допустим тут: http://teplofizik.diary.ru/p182430549.htm?oam#more1

как правильнее писать, и еще вопрос почему когда в кейле пытаюсь написать первым вариантом он не может понять что я инициализурую( ну короче вообще не компилится и команды красным подчеркивает) я так понимаю,что в каком-то служебном файлике команды прописаны как во втором варианте,если я прав подскажите как файлик называется,уже столько времени копаюсь,что ппц...

спасибо всем тем кто поставит на путь истинный :laughing: !

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

пример 1 - работа напрямую с регистрами

пример 2 - вызов функций из ST-шной SPL (Standart Peripheral Library). По сути, делают то же самое

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

пример 1 - работа напрямую с регистрами

пример 2 - вызов функций из ST-шной SPL (Standart Peripheral Library). По сути, делают то же самое

Но второй вариант делает это через глубокий анус.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но второй вариант делает это через глубокий анус.

я знаю Вашу "любовь" к библиотекам, написанным не Вами, но для первого старта - посмотреть что и как - вполне себе

хотя... там действительно все как-то сделано... нипанашынски :)

тоже делаю свое, хоть и с подсмотром некоторых моментов из SPL со сверкой с даташитом

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

я знаю Вашу "любовь" к библиотекам, написанным не Вами...

Увы, это жизненный опыт :(. C середины 90x годов встречал только с разной степенью безумности писанные "библиотеки". Вот почти прямо сейчас вожусь с JN5168 чипом. С ним уже абсолютно вырожденный вариант - документации нет вообще - только либы и точка. Либы само-собой уже без исходников. Казалось-бы меньше знаешь - крепче спишь, но ведь дерьмо лезет все равно. API написано через анус, хотя для тех-же базовых функций предачи пакетов мог-ли-бы посмотреть хотя-бы лет тридцать назад специфицированный интерфейс пакетного драйвера. Так нет, написана какя-то фигня котороая как-бы с одной стороны как-бы показывет, что опыт проедшественников как-бы знаком, но с другой стороны, что ОН НЕ ПОНЯТ!!! Море байтовых пременых на 32bit контроллере, сруктруры БЕЗ правил паковки, но зато местами за неведомым хреном с напихаными выравнивающими полями. Один кусок "библиотеки" все-же есть в исходнике, ибо не смогли родить достойный API - пришлось отдавать пользователям шанс расхлебать. Так я чуть мозг не вывихнул думая, что в том нагромождении структур и очередей есть какой-то смысл и наихитрейшая хитрость. Но ее там нет. Совсем нет. Одна глупость нагромождения школярских рецептов программирования которые запихнули в автора сего творения преподаватели, но не смогли впихнуть ему мозга побольше.

, но для первого старта - посмотреть что и как - вполне себе

хотя... там действительно все как-то сделано... нипанашынски :)

тоже делаю свое, хоть и с подсмотром некоторых моментов из SPL со сверкой с даташитом

Ну так безусловного отторжения "библиотек" нет - все-же хоть как-то работающий хоть какой-то образчик. Дальше уже если что-то дышет - дальше сам. Но уж на "библиотечные" функции типа "подрыгать ножкой" уж точно не смотрю никогда.

На самом деле проблемы с разными "исходниками" зачастую начинабтся еще раньше библиотек - поставщики компиляторов обычно поставляют и хидеры. Причем все чаще и чаще обращаются более, чем вольно с описаниями производителя и напихивают своих даже не расширений а вообще уродств. Понятно, что-бы начинающе-непонимающие на другой компилятор не соскакивали. Посему почти всегда правки начинаются уже с постепенного добавления собственноручно написанных/правленых хидеров.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...