Easyelectronics.ru

Электроника для всех
Текущее время: 01 мар 2021, 17:14

Часовой пояс: 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
Сообщения: 310
_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
Сообщения: 310
Извините что потревожил.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: 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
Сообщения: 144
Откуда: Калуга
В симуляторе прерывания смотрели? Если да, там нужно искусственно его стимулировать. Зашейте в плату и смотрите.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: 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
Сообщения: 144
Откуда: Калуга
Да простят меня за рекламу себя самого :)
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 Кб]
Скачиваний: 225
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: 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
Сообщения: 144
Откуда: Калуга
В общем посмотрел. У тебя косяк с функцией 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 часов


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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

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