Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Keil µVision, отладочные функции
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Cредства разработки для МК > Keil
ViKo
Как создать простейшую функцию, которую можно вызвать при отладке микроконтроллера STM32?
Вот пример из помощи:
Код
/*----------------------------------------------------------------------
  Toggle I/O Pin
----------------------------------------------------------------------*/
SIGNAL void toggle_IO_pin()  {
  int i;
  PORT0 = 0x0;
  for (i = 0; i < 20; i++)  {
    PORT0 = (PORT0 ^ 0x01);
    swatch(0.5);
  }
}
DEFINE BUTTON "Toggle P0.0", "toggle_IO_pin()"


Как задать порт для Cortex? На все мои варианты выдается ответ:
GPIOE &= ~0x04; /* clear PORTE bit 2 */
__^
*** error 34, line 26: undefined identifier

Оно вообще работает для Cortex, или остановилось на 8051?
ViKo
Для STM32F207 можно увидеть следующие виртуальные регистры:
TRAPS, TRIGFLT, STCLK, XTAL, CLOCK
Подозреваю, что это всё.
Не понимаю. laughing.gif

P.S. А для STM32F103 есть куча, в том числе PORTA...PORTD. Ага... ну не суки ли!
Может в Keil 4.60 добавилось регистров?
x893
мда-а-а
пипец. проверил на 4.6 такая же фигня.
Придётся мне возвращаться на 8051
редактор
Для 51-х тоже не все так гладко. У Silabs например для 320-х регистры прописаны и функции работают, а для 040-х нет, хотя обе серии достаточно древние (Keil 4.23).
Цитата
Ага... ну не суки ли!

редактор
Может SFR-файл неверно указан (или не находит его). В отладчике через View->Sistem Viewer перефирия видна?
Если нет то в свойствах проекта на вкладке "Target" нужно попробовать указать полный путь до sfr-файла.
Не факт что поможет, но ...
Falkon_99
В STM Cortex все через макросы, описание которых находится в файлах CMSIS. Например для STM32F100 это файл stm32f10x.h
Для сброса бита порта пишут так GPIOE->ODR &= ~GPIO_ODR_ODR4;
Allregia
Цитата(ViKo @ Nov 21 2012, 14:55) *
Для STM32F207 можно увидеть следующие виртуальные регистры: TRAPS, TRIGFLT, STCLK, XTAL, CLOCK Подозреваю, что это всё. Не понимаю. laughing.gif P.S. А для STM32F103 есть куча, в том числе PORTA...PORTD. Ага... ну не суки ли! Может в Keil 4.60 добавилось регистров?

Я не очень понял, о каких регистрах и какой "видимости" идет речь?
Если речь идет о видимости в дебаггере, то у меня Keil 4.23 - все регистры F103 и F407 видны, полагаю что с 207-м аналогично. Только для F103 они все в Peripherals, а для F4 там только регистры ядра, а все остальное, включая порты, во View->System Viewer.
Или Вы не об этом?
ViKo
В System Viewer периферийные регистры видны. Но это не то.
В Symbol Window можно увидеть виртуальные регистры. Их можно использовать, например, для имитации что-то на входах портов. Или для приема по USART. Так вот, для STM32F2XX их там очень мало. В отличие от STM32F103. И подмена файлов stm32f2xx.sfr не помогает.
Allregia
Понял. Да, у меня тоже самое как у Вас.


P.S. Есть вопрос - у меня в Кейл 4.32 с F407 не работает симулятор. С железом через JTAG/SWD - без проблем, как толко переключаю в симулятор и жму ^D, в окне Command пишет:
*** error 65: access violation at 0x0000000C : no 'read' permission

В окне дизасма стоит на нулевом адресе, в данных: 0000 MOVS r0,r0
В окне Си-текста можно принудительно поставить (по правой кноке - Set Program Counter) куда угодно (в окне дизаа при этом реальный код).
Но ни по шагам ни как - ничего не работает.
ViKo
Нужные адреса можно задать командой map. Которую можно записать в ini файле. Который можно подключить во время симуляции. Место для него есть в настройках.
Нулевые адреса в map прописаны были сразу.
Allregia
Почему ничего этого не надо было для F103 ?
Палыч
Цитата(ViKo @ Nov 21 2012, 16:55) *
Подозреваю, что это всё.
Не понимаю. laughing.gif

Разработчики на своем сайте Вас честно предупредили:
Цитата
Complete peripheral simulation is not available at this time.
Чего же Вы еще хотите ?
ViKo
Цитата(Палыч @ Nov 25 2012, 14:57) *
Разработчики на своем сайте Вас честно предупредили:
Чего же Вы еще хотите ?

Это если искать. Нашел, просветился.
Хочу, чтобы было available now! Или "Оставь надежды..."?
_Артём_
Цитата(ViKo @ Nov 25 2012, 17:04) *
Хочу, чтобы было available now! Или "Оставь надежды..."?

Почему бы просто не взять среду, где они уже "available now" и отлаживать в ней.
Неужели нет ни одной Ide с поддержкой периферии STM32F2XX? Не верю.
ViKo
Цитата(_Артём_ @ Nov 25 2012, 18:13) *
Почему бы просто не взять среду, где они уже "available now" и отлаживать в ней.
Неужели нет ни одной Ide с поддержкой периферии STM32F2XX? Не верю.

А я не уверен, что существует среда, кроме Keil, где на порт STM32 можно подать какие-нибудь данные снаружи. Если кто подскажет, спасибо.
_Артём_
Цитата(ViKo @ Nov 25 2012, 18:43) *
А я не уверен, что существует среда, кроме Keil, где на порт STM32 можно подать какие-нибудь данные снаружи.

Если вам нужен нужна, то наверное не найдёте.

P.S. Не пойму что делает эта функция? Почему нельзя в реальной плате подать на порт что требуется?
ViKo
Цитата(_Артём_ @ Nov 25 2012, 22:57) *
P.S. Не пойму что делает эта функция? Почему нельзя в реальной плате подать на порт что требуется?

Потому что в реальной плате этого нет. sm.gif
Например. Экспериментирую с ОСРВ на плате с STM32F207, которая предназначена для другого проекта (в который и хочу внедрить ОСРВ). Из подходящего для проверки работы железа - только светодиод. Кнопки нет. Припаял на проводах. Потом вспомнил, что можно имитировать ее виртуально (если работать в симуляторе). Нажал мышкой на кнопку в Keil - на нужный порт пришла единица. Аналогично, можно имитировать что-то поступающее по USART или SPI, ответ от SPI Flash, например.
Не зря же в Keil дается выбор для отладки - симулятор или железный отладчик.
Похожее есть в MPLAB для PIC. Наверное, есть в Proteus (не знаю даже, как он выглядит).
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.