Перейти к содержанию
    

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

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

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

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

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

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


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

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

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

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

 

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

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

 

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

 

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


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

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

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

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


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

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

 

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

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

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


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

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

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

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

 

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


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

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

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

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

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


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

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

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

 

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

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

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


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

Здесь были? >

 

http://forum.easyelectronics.ru/viewtopic....f=35&t=7080

 

Там по одной ссылке есть очень хорошая книга по СТМ32 на Русском!

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


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

Создал проект, пробуйте.

 

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

 

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

 

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

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


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

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

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


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

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

 

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

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

 

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

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


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

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

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

 

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

есть файлы:

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;

 

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

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

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


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

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...