реклама на сайте
подробности

 
 
4 страниц V  « < 2 3 4  
Reply to this topicStart new topic
> STM32F0+Keil=простой старт, Помогите начать работать с АРМ Cortex M0
Artos5
сообщение Nov 12 2013, 08:54
Сообщение #46


Частый гость
**

Группа: Участник
Сообщений: 124
Регистрация: 21-07-13
Из: Украина, Ахтырка
Пользователь №: 77 613



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


..\Source\stm32f0xx_it.c(104): warning: #223-D: function "indication_func" declared implicitly
Go to the top of the page
 
+Quote Post
KuAlex
сообщение Jan 27 2014, 04:41
Сообщение #47





Группа: Новичок
Сообщений: 6
Регистрация: 6-11-13
Пользователь №: 79 060



Добрый день.
У меня проблема с использованием 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 ?
Каким образом мне записывать значения в регистры, так, чтоб они отображались и работали?
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 27 2014, 07:59
Сообщение #48


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(KuAlex @ Jan 27 2014, 07:41) *
Добрый день.
У меня проблема с использованием adc, микросхема - STM32F050F4, измерение не происходит.
...
И при отладке в железе видно, что регистры не записываются в нужные значения
...
Каким образом мне записывать значения в регистры, так, чтоб они отображались и работали?

А тактирование АЦП включили? Нужную тактовую частоту подали?
Go to the top of the page
 
+Quote Post
KuAlex
сообщение Jan 27 2014, 17:52
Сообщение #49





Группа: Новичок
Сообщений: 6
Регистрация: 6-11-13
Пользователь №: 79 060



Цитата(ViKo @ Jan 27 2014, 09:59) *
А тактирование АЦП включили? Нужную тактовую частоту подали?

По умолчанию тактирование включено от асинхронного собственного генератора 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 ( 169.78 килобайт ) Кол-во скачиваний: 56
 
Go to the top of the page
 
+Quote Post
KuAlex
сообщение Jan 28 2014, 21:05
Сообщение #50





Группа: Новичок
Сообщений: 6
Регистрация: 6-11-13
Пользователь №: 79 060



Всем спасибо за участие, проблему решил. Оказалось нужно дополнительно включить такты на управление регистрами ADC
Код
RCC->APB2ENR |= RCC_APB2ENR_ADC1EN;

Теперь все в порядке
Go to the top of the page
 
+Quote Post
ViKo
сообщение Jan 29 2014, 11:10
Сообщение #51


Универсальный солдатик
******

Группа: Модераторы
Сообщений: 8 634
Регистрация: 1-11-05
Из: Минск
Пользователь №: 10 362



Цитата(KuAlex @ Jan 29 2014, 00:05) *
Оказалось нужно дополнительно включить такты на управление регистрами ADC

Также, как и для всех других периферийных устройств. Если не работают - проверяйте тактирование в первую очередь.
Go to the top of the page
 
+Quote Post
KuAlex
сообщение Mar 10 2014, 14:43
Сообщение #52





Группа: Новичок
Сообщений: 6
Регистрация: 6-11-13
Пользователь №: 79 060



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

Не могу найти данный обработчик в серии F0.
Стоит задача запустить группу преобразований и отправить через DMA обработать прерывание по окончанию преобразования группы измерений.
Каким образом вызвать такое прерывание если в списке векторов прерывания в библиотеке нашел только вызов оконного :
Код
ADC1_COMP_IRQn              = 12,     /*!< ADC1, COMP1 and COMP2 Interrupts                        */

Образцы работы с ADC + DMA есть для другой f10x серии, но там в библиотеке обработчик описан, а тут нет
Go to the top of the page
 
+Quote Post
Mister-dok
сообщение Jul 19 2015, 14:23
Сообщение #53





Группа: Новичок
Сообщений: 1
Регистрация: 19-07-15
Пользователь №: 87 632



вСЕМ ПРИВЕТ!
я начинаю изучать 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.gif !
Go to the top of the page
 
+Quote Post
toweroff
сообщение Jul 22 2015, 06:48
Сообщение #54


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



пример 1 - работа напрямую с регистрами
пример 2 - вызов функций из ST-шной SPL (Standart Peripheral Library). По сути, делают то же самое
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 22 2015, 12:18
Сообщение #55


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (toweroff @ Jul 22 2015, 09:48) *
пример 1 - работа напрямую с регистрами
пример 2 - вызов функций из ST-шной SPL (Standart Peripheral Library). По сути, делают то же самое

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


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
toweroff
сообщение Jul 22 2015, 19:44
Сообщение #56


Гуру
******

Группа: Свой
Сообщений: 2 957
Регистрация: 19-09-06
Из: Москва
Пользователь №: 20 514



Цитата(zltigo @ Jul 22 2015, 15:18) *
Но второй вариант делает это через глубокий анус.

я знаю Вашу "любовь" к библиотекам, написанным не Вами, но для первого старта - посмотреть что и как - вполне себе
хотя... там действительно все как-то сделано... нипанашынски sm.gif
тоже делаю свое, хоть и с подсмотром некоторых моментов из SPL со сверкой с даташитом
Go to the top of the page
 
+Quote Post
zltigo
сообщение Jul 23 2015, 08:17
Сообщение #57


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



QUOTE (toweroff @ Jul 22 2015, 22:44) *
я знаю Вашу "любовь" к библиотекам, написанным не Вами...

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

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


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post

4 страниц V  « < 2 3 4
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 00:08
Рейтинг@Mail.ru


Страница сгенерированна за 0.01458 секунд с 7
ELECTRONIX ©2004-2016