Jump to content

    

Keil µVision, отладочные функции

Как создать простейшую функцию, которую можно вызвать при отладке микроконтроллера 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?

Share this post


Link to post
Share on other sites

Для STM32F207 можно увидеть следующие виртуальные регистры:

TRAPS, TRIGFLT, STCLK, XTAL, CLOCK

Подозреваю, что это всё.

Не понимаю. :laughing:

 

P.S. А для STM32F103 есть куча, в том числе PORTA...PORTD. Ага... ну не суки ли!

Может в Keil 4.60 добавилось регистров?

Share this post


Link to post
Share on other sites

мда-а-а

пипец. проверил на 4.6 такая же фигня.

Придётся мне возвращаться на 8051

Edited by x893

Share this post


Link to post
Share on other sites

Для 51-х тоже не все так гладко. У Silabs например для 320-х регистры прописаны и функции работают, а для 040-х нет, хотя обе серии достаточно древние (Keil 4.23).

Ага... ну не суки ли!

 

Share this post


Link to post
Share on other sites

Может SFR-файл неверно указан (или не находит его). В отладчике через View->Sistem Viewer перефирия видна?

Если нет то в свойствах проекта на вкладке "Target" нужно попробовать указать полный путь до sfr-файла.

Не факт что поможет, но ...

Share this post


Link to post
Share on other sites

В STM Cortex все через макросы, описание которых находится в файлах CMSIS. Например для STM32F100 это файл stm32f10x.h

Для сброса бита порта пишут так GPIOE->ODR &= ~GPIO_ODR_ODR4;

 

Share this post


Link to post
Share on other sites
Для STM32F207 можно увидеть следующие виртуальные регистры: TRAPS, TRIGFLT, STCLK, XTAL, CLOCK Подозреваю, что это всё. Не понимаю. :laughing: P.S. А для STM32F103 есть куча, в том числе PORTA...PORTD. Ага... ну не суки ли! Может в Keil 4.60 добавилось регистров?

Я не очень понял, о каких регистрах и какой "видимости" идет речь?

Если речь идет о видимости в дебаггере, то у меня Keil 4.23 - все регистры F103 и F407 видны, полагаю что с 207-м аналогично. Только для F103 они все в Peripherals, а для F4 там только регистры ядра, а все остальное, включая порты, во View->System Viewer.

Или Вы не об этом?

Share this post


Link to post
Share on other sites

В System Viewer периферийные регистры видны. Но это не то.

В Symbol Window можно увидеть виртуальные регистры. Их можно использовать, например, для имитации что-то на входах портов. Или для приема по USART. Так вот, для STM32F2XX их там очень мало. В отличие от STM32F103. И подмена файлов stm32f2xx.sfr не помогает.

Share this post


Link to post
Share on other sites

Понял. Да, у меня тоже самое как у Вас.

 

 

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) куда угодно (в окне дизаа при этом реальный код).

Но ни по шагам ни как - ничего не работает.

Share this post


Link to post
Share on other sites

Нужные адреса можно задать командой map. Которую можно записать в ini файле. Который можно подключить во время симуляции. Место для него есть в настройках.

Нулевые адреса в map прописаны были сразу.

Share this post


Link to post
Share on other sites
Подозреваю, что это всё.

Не понимаю. :laughing:

Разработчики на своем сайте Вас честно предупредили:

Complete peripheral simulation is not available at this time.
Чего же Вы еще хотите ?

Share this post


Link to post
Share on other sites
Разработчики на своем сайте Вас честно предупредили:

Чего же Вы еще хотите ?

Это если искать. Нашел, просветился.

Хочу, чтобы было available now! Или "Оставь надежды..."?

Share this post


Link to post
Share on other sites
Хочу, чтобы было available now! Или "Оставь надежды..."?

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

Неужели нет ни одной Ide с поддержкой периферии STM32F2XX? Не верю.

Share this post


Link to post
Share on other sites
Почему бы просто не взять среду, где они уже "available now" и отлаживать в ней.

Неужели нет ни одной Ide с поддержкой периферии STM32F2XX? Не верю.

А я не уверен, что существует среда, кроме Keil, где на порт STM32 можно подать какие-нибудь данные снаружи. Если кто подскажет, спасибо.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this