Jump to content

    
Sign in to follow this  
Artos5

STM32F0+Keil=простой старт

Recommended Posts

Видимо моя вина, не расписал комментарии. Но это нормально, запомнит. А то автоматом прошло и хорошо, а надо в отладке пройти по шагам и понять что там делается подробно. Я так делаю.

В ARM каждый модуль необходимо включить подачей тактового сигнала.

hd44780 Вам подсказал, порты А и С были включены, а В нет. Потому и не заработал.

Edited by andries5

Share this post


Link to post
Share on other sites
Видимо моя вина, не расписал комментарии. Но это нормально, запомнит. А то автоматом прошло и хорошо, а надо в отладке пройти по шагам и понять что там делается подробно. Я так делаю.

В ARM каждый модуль необходимо включить подачей тактового сигнала.

hd44780 Вам подсказал, порты А и С были включены, а В нет. Потому и не заработал.

 

Большущее Вам спасибо! Не знаю , куда я смотрел ? :)

Теперь работает порт В : )))

 

Мне начинает нравится ARM! Особенно точностью генерирования сигнала! Настроил прерывание на 100Гц и в нем меняю состояние выхода, и мой мультиметр показал точно 50.00Гц !

 

Share this post


Link to post
Share on other sites
Особенно точностью генерирования сигнала! Настроил прерывание на 100Гц и в нем меняю состояние выхода, и мой мультиметр показал точно 50.00Гц !

Учтите, на плате STM32F0Discovery целевой МК, тактируется от встроенного генератора. На плате нет кварца! Только место под него.

Share this post


Link to post
Share on other sites
Учтите, на плате STM32F0Discovery целевой МК, тактируется от встроенного генератора. На плате нет кварца! Только место под него.

 

Я это заметил :)

А скажите пожалуйста что это за системный таймер? И с какой макс. частотой могут происходить прерывания?

Share this post


Link to post
Share on other sites
Учтите, на плате STM32F0Discovery целевой МК, тактируется от встроенного генератора. На плате нет кварца! Только место под него.

И что??? Вы ничего не путаете???

SB18 (MCO) ON Provides the 8 MHz for OSC_IN from MCO of STM32F103C8T6.

 

Share this post


Link to post
Share on other sites

Верно! SB18 замкнут, а SB17 разомкнут. Не обратил внимания. Значит от кварца.

А о SYSTICK почитать например http://chipspace.ru/stm32-systick

Edited by andries5

Share this post


Link to post
Share on other sites
Верно! SB18 замкнут, а SB17 разомкнут. Не обратил внимания. Значит от кварца.

А о SYSTICK почитать например http://chipspace.ru/stm32-systick

 

Спасибо! Хорошо разжевано! :)

Вот по больше таких примеров и описаний!

Share this post


Link to post
Share on other sites
Создал проект, пробуйте.

 

Не могу запустить проект в симуляторе - *** error 65: access violation at 0x0000000C : no 'read' permission

 

Подскажите куда копать?

 

Пробовал с stm32f100 debug c помощью st-link проходило успешно, вот только меню периферии существенно отличалось - можно было наблюдать подробную информацию о состоянии портов, настройках и частотах. Здесь же голые регистры показаны. Этот момент от чего зависит?

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
В симуляторе проэкт может не работать, например если при инициализации в коде есть бесконечный цикл ожидания готовности регистров. На реальной плате эта проверка легко проходит, а в симуляторе зависает. Может помочь галочка RUNtoMAIN, с которой вы пропустите начальный код STARTUP

 

Дело в том что проект не стартовал совсем, в нулевом адресе. Галочка не помогла..

С другого проекта подглядел, здесь помогло. Установил параметр SARMCM3.DLL ->> "-REMAP" во вкладке Debug. Ошибки все равно идут, но симулирует, правда периферию показывает не так подробно как 32F100 и пользы не приносит. Что бы это значило?

 

И еще вопрос, есть шанс прошить F0 при помощи st-link установленного vlDiscovery или сразу заказывать программатор вместе с МК?

Share this post


Link to post
Share on other sites

Добрый день дорогие друзья и товарищи!

Помогите пожалуйста чайнику...

 

Начну по порядку.

есть файлы:

1) main.c // тут есть функции индикации

2) STM32F0xx_it.c // тут содержатся обработчики прерывания

 

Во втором файле , такой обработчик:

void SysTick_Handler(void)
{
indication_funс();
}

 

void led_out (){

           clear_leds; // digit off
       
         switch (y) // select digit
          { 
           
           case 0:
            
              IND_PORT->ODR  = led_buff[0];            
            digit_1;
           break;
           case 1:
            
              IND_PORT->ODR  = led_buff[1];             
            digit_2;
           break;
           
           case 2:
            
              IND_PORT->ODR  = led_buff[2];             
            digit_3;
           break;
          
          }
                          if (++y>2)y=0;
}

void indication_func()
  {
  

           temp1 = temp;

           temp_lcd1=temp_lcd2=temp_lcd3=0;
          while (temp1>99)
          {
            temp1-=100;
            temp_lcd3++;
          }

          while (temp1>9)
          {
            temp1-=10;
            temp_lcd2++;
          }

          while (temp1<10 && temp1!=0)
          {
            temp1--;
            temp_lcd1++;
          }

       if(temp<10)
       {
          led_buff[2]=led_table[temp_lcd1];
          led_buff[1]=led_table[10];
          led_buff[0]=led_table[10];
       }
       else if(temp>9 && temp<100)
       {
          led_buff[1]=led_table[temp_lcd1];
          led_buff[2]=led_table[temp_lcd2];
          led_buff[0]=led_table[10];
       }
       else if(temp>99)
       {
          led_buff[0]=led_table[temp_lcd1];
          led_buff[1]=led_table[temp_lcd2];
          led_buff[2]=led_table[temp_lcd3];
       }   
            led_out();
}

 

Хочу поместить в обработчик системного таймера функцию

 

indication_func();

 

Никакими из всевозможных способов мне не получается это сделать....

 

Надо такое:

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

в переменную значения.

 

temp=111;

 

Помогите пожалуйста! Буду очень благодарен!

Edited by Artos5

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this