Vitemk

Stvd + Cosmic Размер Кода

7 сообщений в этой теме

Vitemk    4

Начал тестовый проект. Использую ST Visual Develop + Cosmic.

Интересует возможность узнать размер занятой памяти (код, озу и т.п.). Лазил в настройках, ничего похожего не нашел. Гугл тоже не помог. Может знает кто, как это сделать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Быстрый заказ печатных плат

Полный цикл производства PCB по низким ценам!

  • x
    мм
Заказать Получить купон на $5.00
i80186    10

Начал тестовый проект. Использую ST Visual Develop + Cosmic.

Интересует возможность узнать размер занятой памяти (код, озу и т.п.). Лазил в настройках, ничего похожего не нашел. Гугл тоже не помог. Может знает кто, как это сделать?

Там в папке с проектом есть папка дебаг, ну или релайз, в зависимости от того, что выбрал. Там находит файл с расширением .map., в нём всё. Но есть же IAR, зачем STVD если сами стшники рекомендуют IAR?

Изменено пользователем i80186

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Vitemk    4

.map во общем то сам уже нашел. Хотелось бы прямо в STVD выводить. Помню, что раньше как-то делал. А к IAR у меня какая-то внутренняя неприязнь, что ли. К тому же на IAR лицензия только на 8кБ. А Cosmic без ограничений.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
i80186    10

Ну так кто мешает мап файл к проекту приатачить и постоянно открытым держать? IAR та умная, та сама так делает. Это попроще, руками надо))

146036da4b7at.jpg

Да и сам мап файл у IAR куда как человечнее. Ну с другой стороны чего хотеть от бесплатного непонятно чего?

И да, есть же тема про эти самые STM8.

http://forum.cxem.net/index.php?showtopic=162791&st=20#comment-2438084

Изменено пользователем i80186

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Vitemk    4

Ну это он щас бесплатный. А несколько месяцев назад был очень даже платный. А держать map файл, это костыль. Очень не удобный костыль.

Вспомнил, что куда-то что-то прописывал и содержимое(не всё, только нужная часть) этого файла вываливалась в окно вывода.

Изменено пользователем Vitemk

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
i80186    10

Да ну. Файл удобнее, ну как по мне. Там по человечески описано сколько например каждая функция занимает, сколько памяти, где константа. Какой смысл смотреть на размер? На сколько надо сложное приложение замутить, чтобы размер кода стал критичен? Это в старые добрые времена памяти вечно не хватало, сейчас проблем с этим нет. Хотя конечно если какой то там PIC10, то да, но опять же там только ассемблер, там всегда точно знаешь сколько чего использовал.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
Vitemk    4

Мне размер обычно нужен, что видеть: нет ли резкого увеличения размера, если вдруг что-то не то накодил.

Но вы меня убедили. Буду использовать .map

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас


  • Похожие публикации

    • Автор: Wenter
      Суть программы нажали на кнопку ушли в прерывание, в прерывании от кнопки поменяли уровень на порту со светодиодом, порт с LED соединён с другим портом на котором тоже есть прерывание при переходе из 0 в 1, Соответственно при нажатии кнопки ушли в прерывание там выставили смену уровня на другой ноге и должно сработать другое прерывание. Проблема, прерывание от кнопки работает, прерывание от смены уровня нет. Хотя этаже программа работала, плата STM8L152C6T6 пере прошивалась затем залилась этаже прога и не заработала.
      Ещё вопрос при прерывании от кнопки устанавливается бит флага  EXTI_SR1_bit.P1F а чтоб его сбросить почему то работает EXTI_SR1_bit.P2F=0; а не EXTI_SR1_bit.P1F=0;
      Код программы полностью: В IAR
      /*
      *15.11.2016
      *STM8L152C6T6
      *
      *Измерять таймером задержку от нажатия кнопки до начала генерации
      */
      #include "iostm8l152c6.h"
      int perep;
      unsigned int tic;
      /**************Обработка вектора прерывания от кнопки**************/
           #pragma vector=EXTI1_vector
           __interrupt void Pin1_interrupt(void)
           {
             EXTI_SR1_bit.P2F=0;//Сброс флага прерывания
             TIM1_CR1_bit.CEN = 1; //Запускаем таймер
             PC_ODR_bit.ODR7^=1; //Инверсия порта С7
           }
      /**************Обработка вектора прерывания от начала генерации**************/
         
       #pragma vector=EXTI6_vector
           __interrupt void Pin6_interrupt(void)
           {
             EXTI_SR1_bit.P2F=0;//Сброс флага прерывания
              TIM1_CR1_bit.CEN = 0; //Останавливаем  таймер
              tic=TIM1_CNTRL;
             PE_ODR_bit.ODR7^=1; //Инверсия порта E7
             
           }
      /************************При переполнении таймера*******************************************************/
       /*#pragma vector=TIM1_OVR_UIF_vector
           __interrupt void TIM1_OVF(void)
           {
             //perep++;
             
           }*/
      int main( void )
      {
      /***************Выберем частоту SYSCLK************/
        //По умолчанию тактируемся от HSI/8
        CLK_CKDIVR=0;// Выбираем делитель на 1
       
      /********Инициализация пина который моргает Светодиодом ИИИИИИИИИИИИИИИНДИКАЦИЯ********/  
        PC_DDR_bit.DDR7 = 1; //Настраиваем 7й пин порта C на выход
        PC_CR1_bit.C17 = 1; //Переключаем его в режим push-pull (это когда он может выдавать
        //и низкий и высокий уровень), а то по-умолчанию он прикидывается пинов с открытым стоком
        //(это когда может выдавать только низкий уровень, а вместо высокого переключается на вход)
       
        /********Инициализация пина который моргает Светодиодом********/  
        PE_DDR_bit.DDR7 = 1; //Настраиваем 7й пин порта C на выход
        PE_CR1_bit.C17 = 1; //Переключаем его в режим push-pull (это когда он может выдавать
        //и низкий и высокий уровень), а то по-умолчанию он прикидывается пинов с открытым стоком
        //(это когда может выдавать только низкий уровень, а вместо высокого переключается на вход)
      /****************************************************************************************/  
       
       /*****************ПРЕРЫВАНИЕ ОТ КНОПКИ****************************************************************************/
        /*С начало настраиваем пины с кнопкой*/
        PC_DDR_bit.DDR1 =0; //Настраиваем 1й пин порта C на вход
        PC_CR1_bit.C11=1; //Настроили порт кнопки на вход pull-up
        PC_CR2_bit.C21=1; //Размещаем прерывание
       
        /***************Настройка прерываний**************/
        /*В регистре EXTI_CONF1 по умолчанию все 0
          тоесть каждый пин даёт нам отдельное прерывание*/
       
        //Настраиваем фронт срабатывания прерывания
        //Т.к. кнопка замыкается на землю то выбираем задний фронт
         EXTI_CR1_bit.P1IS=2; //Прерывание на ножке срабатывает по заднему фронту
         //ITC_SPR1_bit.VECT1SPR=0; //Высокий прерывание от нашей кнопки
      /**************************************************************************************************************/
         
      /*********************ПРЕРЫВАНИЕ ПРИ НАЧАЛЕ ГЕНЕРАЦИИ**********************************************************/
        PC_DDR_bit.DDR6 =0; //Настраиваем 6й пин порта C на вход
        PC_CR1_bit.C16=1; //Настроили порт  на вход pull-up
        PC_CR2_bit.C26=1; //Размещаем прерывание
       
        /***************Настройка прерываний**************/
        /*В регистре EXTI_CONF1 по умолчанию все 0
          то есть каждый пин даёт нам отдельное прерывание*/
       
        //Настраиваем фронт срабатывания прерывания
        //Фронт  прерывания передний
        EXTI_CR2_bit.P6IS=1; //Прерывание на ножке срабатывает по переднему фронту
        //ITC_SPR2_bit.VECT6SPR=3; //Средний приоритет  прерывание от нашей кнопки
         
      /*********Настройка таймера TIM1***************************/
        CLK_PCKENR2_bit.PCKEN21 = 1; //Включаем тактирование таймера TIM1
        //Делитель на 160
        //НО выставляем 15(так как всегда +1)
        TIM1_PSCRH = (15) >> 8;
        TIM1_PSCRL = (15)& 0xFF;
        TIM1_PSCRH = (0) >> 8;
        TIM1_PSCRL = (0)& 0xFF;
        //Счет по умолчанию вверх TIM1_CR1 DIR=0
        //Значение регистра сравнения(До чего тикает таймер)
        TIM1_ARRH = (10000) >> 8;
        TIM1_ARRL = (10000)& 0xFF;//Частота переполнений = 16М / 1600 / 10000 = 1 Гц
       /*Новый пред делитель в таймер записывается только после  события Update (Update Event — UEV)
         чтоб сразу инициализировать нужный пред делитель
         вызовем программно Update (Update Event — UEV), и чтоб в это время не уйти в какое нибудь
         прерывание разрещим прерывание только от переполнения таймера */
        TIM1_CR1_bit.URS = 1; //Прерывание только по переполнению счетчика
        TIM1_EGR_bit.UG = 1;  //Вызываем Update Event
        TIM1_IER_bit.UIE = 0; //Запрещаем прерывание при совпадении с ARR
        TIM1_CR1_bit.CEN = 0; //не Запускаем таймер
       
         asm("RIM");//Глобальное разрешение прерываний
         
        while(1)
        {
        }
      }
       
    • Автор: admin
      Запускаем новый видеокурс по микроконтроллерам семейства STM8. Курс планируем сделать интересным и интерактивным. Будут различные задания для проверки ваших знаний. От вас хотим услышать обратную связь и активное обсуждение, а также ждем любых вопросов!
      Ведет курс Василий (Профиль на сайте cxem.net для доната: i80186)
      Урок #1:


      Рассмотрены основные особенности микроконтроллеров серии STM8 серии STMicroelectronics. Проведено сравнение их с микроконтроллерами фирм Atmel и Microchip. Так же уделено внимание средствам разработки и отладки для данных микроконтроллеров, требующимся для начала работы с ними, а именно среде IAR EMBEDDED WORKBENCH для STM8 и отладочному набору на базе микроконтроллера STM8S105 - STM8S-DISCOVERY.
    • Автор: admin

      Рассмотрены основные особенности микроконтроллеров серии STM8 серии STMicroelectronics. Проведено сравнение их с микроконтроллерами фирм Atmel и Microchip. Так же уделено внимание средствам разработки и отладки для данных микроконтроллеров, требующимся для начала работы с ними, а именно среде IAR EMBEDDED WORKBENCH для STM8 и отладочному набору на базе микроконтроллера STM8S105 - STM8S-DISCOVERY.
    • Автор: dron-r
      Добрый вечер.
      Есть несколько непонятных для меня вопросов:
      1. Что есть программатор? Зачем нужен?
      2. Зачем делать свой программатор, если к данному МК существует заводской?
      3. Что есть отладочная плата? Зачем нужна?
      4. Подойдет ли для начинающего STM8? Почему?
      5. Подойдет ли для начинающего STM32? Почему?
      6. С чего нужно начинать изучения МК? (знаю язык C (C++))
      7. Можно ли программировать МК на С++?
      Можете пожалуйста разъяснить все это. Данные вопросы возникли после чтения статей и уроков по МК из интернета.
      Спасибо.
    • Автор: ftp27
      Пытаюсь завести UART на сабжевом микроконтроллере. В принципе таки все есть, но UART упорно молчит при передаче и не выходит на прерывание при приеме. Чутье подсказывает, что я просто напросто не так подал тактирование на модуль USART, но уже раз 10 все перепроверил. Все именно так.
      Вот код:

      #include "iostm8l152c6.h" int main ( void ) { PC_DDR_bit.DDR3 = 1; PC_CR1_bit.C13 = 1; PC_CR2_bit.C23 = 0; PC_DDR_bit.DDR2 = 0; PC_CR1_bit.C12 = 1; PC_CR2_bit.C22 = 1; //UART init CLK_PCKENR1_bit.PCKEN15 = 1; USART1_CR1 = 0; USART1_CR3 = 0; USART1_CR4 = 0; USART1_CR5 = 0; USART1_BRR2 = 0x03; USART1_BRR1 = 0x68; USART1_CR2_bit.RIEN = 1; USART1_CR2_bit.REN = 1; USART1_CR2_bit.TEN = 1; asm("RIM"); while (1) { //Loop while(!(USART1_SR_bit.TC)); USART1_DR = '!'; } return 0; } #pragma vector=USART_R_OR_vector __interrupt void USART_RXNE(void) { while(!(USART1_SR_bit.TC)); USART1_DR = '?'; }
      По поводу железа... Передачу (TX со стороны STM) я жду на лапе PC3, а прием (RX) на PC2