Easyelectronics.ru

Электроника для всех
Текущее время: 29 окт 2020, 20:52

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/5шт. два слоя. $5/5шт. четыре слоя
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 41 ]  На страницу 1, 2  След.
Автор Сообщение
 Заголовок сообщения: Трабл с stm32vldiscovery
СообщениеДобавлено: 16 июн 2011, 21:06 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 15 янв 2011, 02:13
Сообщения: 81
Салют, господа!
Недавно появилась у меня stm32vldiscovery. Помигал светодиодом, да решил портировать программный таймер с avr. Естественно что понадобилось запустить один из таймеров в режиме прерываний. Тут-то и начались грабли...

Среда - ИАР. Вот код проекта
Код:
#include "stm32f10x.h"
#include "gpio_emcu.h"

#define  LED3       9
#define  LED4       8
#define  BTN        0
#define  LED3_MASK  (1<<9)   
#define  LED4_MASK  (1<<8)

#define  TRUE       1
#define  FALSE      0

void     InitClock();               
void     InitTimer();               
void     ProcessLeds();             
int main()
{
  InitClock();
  InitTimer();
 
  RCC->APB2ENR |= RCC_APB2ENR_IOPAEN | RCC_APB2ENR_IOPCEN;
  pinOutPP_b(PORTC, LED3);
  pinOutPP_b(PORTC, LED4);
  //pinOutZ_b(PORTA, BTN);
  spin_m(PORTC, LED3_MASK);
  spin_m(PORTC, ~LED4_MASK);
 
  while (1)
  {
  }
}

void InitClock()
{
  char PLL_MUL=12;
  RCC->CFGR2 &= ~(RCC_CFGR2_PREDIV1);
  RCC->CFGR2 |= RCC_CFGR2_PREDIV1_DIV4;
  RCC->CFGR &= ~((RCC_CFGR_PLLSRC|RCC_CFGR_PLLXTPRE|RCC_CFGR_PLLMULL));
  RCC->CFGR |= RCC_CFGR_PLLSRC_PREDIV1;
  RCC->CFGR |= ((PLL_MUL - 2)<<18);
  RCC->CR |= RCC_CR_PLLON;
 
  while ((RCC->CR & RCC_CR_PLLRDY) == 0) {}
 
  RCC->CFGR &= ~RCC_CFGR_SW;
  RCC->CFGR |= RCC_CFGR_SW_PLL;
 
  while ((RCC->CFGR&RCC_CFGR_SWS) != RCC_CFGR_SWS_PLL) {}
}

void InitTimer()
{
  RCC->APB2ENR |= RCC_APB2ENR_TIM17EN;
  NVIC_SetPriority(TIM1_TRG_COM_TIM17_IRQn, 15);
  NVIC_EnableIRQ(TIM1_TRG_COM_TIM17_IRQn);
  TIM17->PSC = 256-1;
  TIM17->ARR = 256-1;
  TIM17->DIER |= TIM_DIER_UIE;
  TIM17->CR1 = TIM_CR1_CEN | TIM_CR1_ARPE;
}

void ProcessLeds()
{
  ipin_m(PORTC, LED4_MASK);
  ipin_m(PORTC, LED3_MASK);
}

void TIM1_TRG_COM_TIM17_IRQHandler(void)
{
  if (TIM17->SR & TIM_SR_UIF)
  {
    TIM17->SR &= ~TIM_SR_UIF;
    ProcessLeds();
  }
}

void NMI_Handler()
{
  if (RCC->CIR & RCC_CIR_CSSF)
    RCC->CIR |= RCC_CIR_CSSC;
}

Также в проекте присутствуют файлы core_cm3.h, core_cm3.c, stm32f10x.h, system_stm32f10x.c и system_stm32f10x.h

А проблемма заключается в том что прерывание не выполняется у меня в программе. Если смотреть отладчиком, то проц крутится в коде в файле startup_stm32f10x_md_vl.s :
Код:
TIM1_TRG_COM_TIM17_IRQHandler
        B TIM1_TRG_COM_TIM17_IRQHandler


Буду благодарен тому кто подскажет в чём моя ошибка (вроде бы всё правильно).


Последний раз редактировалось DarkEN_ANGEL 18 июн 2011, 11:08, всего редактировалось 5 раз(а).

Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 17 июн 2011, 10:21 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 15 янв 2011, 02:13
Сообщения: 81
Неужели никто не может направить меня на путь истинный?
Может где есть пример гдето с этими таймерами?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 17 июн 2011, 22:33 
Старожил

Зарегистрирован: 18 янв 2011, 22:54
Сообщения: 309
_http://ziblog.ru/2011/01/15/stm32-chast-8-ndash-taymeryi-obshhego-naznacheniya-preryivaniya/
Думаю автор статьи не против.
Адрес обработчика прописан в startup.c


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 17 июн 2011, 22:45 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 15 янв 2011, 02:13
Сообщения: 81
andries5 писал(а):
_http://ziblog.ru/2011/01/15/stm32-chast-8-ndash-taymeryi-obshhego-naznacheniya-preryivaniya/
Думаю автор статьи не против.


Если открыть глаза то можно заметить, что именно оттуда сей код и содран... =)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 17 июн 2011, 23:10 
Старожил

Зарегистрирован: 18 янв 2011, 22:54
Сообщения: 309
Извините что потревожил.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 17 июн 2011, 23:33 
Старожил
Аватара пользователя

Зарегистрирован: 11 апр 2010, 19:07
Сообщения: 930
Откуда: Тольятти
Тактирование у таймера включено? RCC

_________________
Роман


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 17 июн 2011, 23:43 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 15 янв 2011, 02:13
Сообщения: 81
ALPINE писал(а):
Тактирование у таймера включено? RCC


Прошу прощения, но Вы мой код смотрели?
Код:
RCC->APB2ENR |= RCC_APB2ENR_TIM17EN;


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 18 июн 2011, 11:14 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 15 янв 2011, 02:13
Сообщения: 81
Добавил в свой код обработчик прерывания NMI_Handler (вызывается в случае ошибки в CSS).
Так вот, если во время отладки выдернуть кварц из платы то проц начинает тупить на
Код:
NMI_Handler
        B NMI_Handler

в файле startup_stm32f10x_md_vl.s
А до брейкпойнта, установленного в void NMI_Handler так и не доходит. В чём проблема?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 19 июн 2011, 11:23 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 15 янв 2011, 02:13
Сообщения: 81
Бляха-муха, целый форум "спецов", а помочь, что ли, некому?!! Проблема-то примитивная!!!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 20 июн 2011, 09:58 
Заглядывает иногда

Зарегистрирован: 29 ноя 2010, 23:50
Сообщения: 140
Откуда: Калуга
В симуляторе прерывания смотрели? Если да, там нужно искусственно его стимулировать. Зашейте в плату и смотрите.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 20 июн 2011, 10:30 
Старожил
Аватара пользователя

Зарегистрирован: 05 сен 2010, 07:23
Сообщения: 575
Откуда: Томск
DarkEN_ANGEL писал(а):
Бляха-муха, целый форум "спецов", а помочь, что ли, некому?!! Проблема-то примитивная!!!

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

_________________
ZiBlog.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 20 июн 2011, 13:49 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 27 янв 2010, 17:00
Сообщения: 72
Откуда: Украина. Бровары
Не так уж много сдесь спецов по АРМ, некоторые только недавно платы получили, вникают.
Сам только к таймерам подобрался.

_________________
Учиться, учиться и еще раз учиться!!!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 20 июн 2011, 14:03 
Старожил
Аватара пользователя

Зарегистрирован: 05 сен 2010, 07:23
Сообщения: 575
Откуда: Томск
да, и я не большой спец :)
для меня в том и интерес работы с микроконтроллерами, что бы сделать самому что-то, а не обращаться по каждой мелочи в форум.

_________________
ZiBlog.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 20 июн 2011, 15:14 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 15 янв 2011, 02:13
Сообщения: 81
Да и я вроде не дурак... )
Раньше занимался avr-ками и, поверьте, работал с вещами и по сложнее каких-то вшивых таймеров...
А тут примитив полнейший не работает как ты его не крути - руки опускаются.
Перепробовал уже ВСЕ таймеры запускать, и уарт пробовал, и с CSS с его NMIHandler игрался (вытаскивал кварц во время работы, на что CSS должен поднимать NMIHandler) - во всех случаях процессор крутился в вечном цикле на описании соответствующего прерывания в asm-файле startup_stm32f10x_md_vl.s...
Такое чувство что процессор просто не знает куда ему идти по приходу прерывания. А если так, то надо объявить какую функцию вызывать... А как - хз.

Уж простите меня если грубый - надо до конца лета доделать проект, а я стою на одном месте. Вот и нервничаю.
Кстати, может у кого есть проект с таймером и его прерыванием для иара? Был бы благодарен увидеть его, ибо чувствую что накосячил где-то рядом, совсем близко.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 20 июн 2011, 15:20 
Старожил
Аватара пользователя

Зарегистрирован: 05 сен 2010, 07:23
Сообщения: 575
Откуда: Томск
я с gcc работаю, старт ап "свой" писал на си, асм меня не вкуривает.
с иаром нужно не только код смотреть но и настройки проекта, насколько я помню там много где можно ошибиться, по нему не подскажу.
выкладывайте весь проект, скачаю иар попробую помочь. (или на мыло шлите)

_________________
ZiBlog.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 20 июн 2011, 16:16 
Заглядывает иногда

Зарегистрирован: 29 ноя 2010, 23:50
Сообщения: 140
Откуда: Калуга
Да простят меня за рекламу себя самого :)
http://milsy.ru/2011/04/30/stm32-discov ... a-tajmera/


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 20 июн 2011, 16:25 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 15 янв 2011, 02:13
Сообщения: 81
Zheleznjakov писал(а):
я с gcc работаю, старт ап "свой" писал на си, асм меня не вкуривает.
с иаром нужно не только код смотреть но и настройки проекта, насколько я помню там много где можно ошибиться, по нему не подскажу.
выкладывайте весь проект, скачаю иар попробую помочь. (или на мыло шлите)


Хорошо, вечером выложу проект сюда.
Надо бы и мне свой стартап заделать(не вкуриваю асм)...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 20 июн 2011, 17:57 
Старожил
Аватара пользователя

Зарегистрирован: 14 июн 2011, 14:22
Сообщения: 335
DarkEN_ANGEL писал(а):
Надо бы и мне свой стартап заделать(не вкуриваю асм)
...пардон за офф .... ассемблер у ARM не такой уж сложный, зато возможностей дох.... - не сравнить с восьмибитками.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 20 июн 2011, 19:54 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 15 янв 2011, 02:13
Сообщения: 81
Zheleznjakov, вот проект. Благодарю за помощь.

ChipKiller, понимаю что по-хорошему надо бы поучить ещё и его, но как-то руки не доходят... Может какой учебник по arm-asm подскажете для изучения на досуге?


Вложения:
EERTOS STM32.rar [112.67 Кб]
Скачиваний: 208
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 20 июн 2011, 20:03 
Старожил
Аватара пользователя

Зарегистрирован: 05 сен 2010, 07:23
Сообщения: 575
Откуда: Томск
Какая версия иар? что-то у меня 5.50 EWARM зависает на вечно при открытии проекта :(
походу я отстал от жизни какой там последний иар?
--
о нет, развис, спустя 6 минут :) но только настройки проекта не подтянул, вот чем хреново работать на автомате, мейкфайл рулит :)
--
а нет, крэшанулся :) после выбора мк...
ищу свежее

_________________
ZiBlog.RU


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 20 июн 2011, 20:26 
Старожил
Аватара пользователя

Зарегистрирован: 14 июн 2011, 14:22
Сообщения: 335
DarkEN_ANGEL писал(а):
.. Может какой учебник по arm-asm подскажете для изучения на досуге?
... могу залить сюда ( если это можно и нужно :) ) все на englishe, скачивал месяца 3 назад, так что ссылки не помню...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 20 июн 2011, 20:34 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 15 янв 2011, 02:13
Сообщения: 81
Zheleznjakov писал(а):
Какая версия иар? что-то у меня 5.50 EWARM зависает на вечно при открытии проекта :(
походу я отстал от жизни какой там последний иар?


Немножко..) IAR 6.10. Взять можно отсюда http://rutracker.org/forum/viewtopic.php?t=3525355
Хотя если лень регистрироваться, могу торрент-файл дать...

ChipKiller писал(а):
... могу залить сюда ( если это можно и нужно :) )

Лучше ссылочкой в PM


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 20 июн 2011, 20:47 
Старожил
Аватара пользователя

Зарегистрирован: 14 июн 2011, 14:22
Сообщения: 335
закачал сюда http://zalil.ru/31301977


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 20 июн 2011, 20:48 
Заглядывает иногда

Зарегистрирован: 29 ноя 2010, 23:50
Сообщения: 140
Откуда: Калуга
В общем посмотрел. У тебя косяк с функцией InitClk(). Что-то ты намудрил там. Симулятор зависает вот на этой строчке и всее while ((RCC->CR & RCC_CR_PLLRDY) == 0) {}. Тупо закоментировав функцию -- все работает вроде.
Но симулятор в иаре мне не нравится. Проще проверят на плате, тупо зашивая прошивку. Таймер в симуляторе у меня тоже не считал, а вот сама плата работала, как и задумывалось.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Трабл с stm32vldiscovery
СообщениеДобавлено: 20 июн 2011, 21:03 
Старожил
Аватара пользователя

Зарегистрирован: 05 сен 2010, 07:23
Сообщения: 575
Откуда: Томск
хух поставил 6.10, открыл проект.
скомпилил, залил в девайс, ни чего не правил зашил в плату, загорелся зеленый светодиод и больше ни какой реакции :)

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

_________________
ZiBlog.RU


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 41 ]  На страницу 1, 2  След.


Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: ILYAUL


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB