Например TDA7294

Форум РадиоКот • Просмотр темы - Для профи! STM32F10x MD - CMSIS - тактирование, прерывания
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Ср апр 24, 2024 22:26:13

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 22 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Для профи! STM32F10x MD - CMSIS - тактирование, прерывания
СообщениеДобавлено: Вт авг 15, 2017 15:31:34 
Встал на лапы

Карма: 4
Рейтинг сообщений: 4
Зарегистрирован: Чт дек 09, 2010 12:03:08
Сообщений: 90
Откуда: Зеленоград
Рейтинг сообщения: 0
Всем мяу!

Решил изучить CMSIS по RefManual..

Подскажите что не так с настройками тактирования и таймером?

Код:
/* CLOCK */
RCC->CR |= ((uint32_t)RCC_CR_HSEON);
while((RCC->CR & RCC_CR_HSERDY) == 0);
FLASH->ACR |= FLASH_ACR_PRFTBE;
FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY);
FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_2;
RCC->CFGR |= (uint32_t)RCC_CFGR_HPRE_DIV1;
RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_PLLSRC | RCC_CFGR_PLLXTPRE | RCC_CFGR_PLLMULL));
RCC->CFGR |= (uint32_t)(((uint32_t)0x00010000) | RCC_CFGR_PLLMULL9);
RCC->CR |= RCC_CR_PLLON;
while((RCC->CR & RCC_CR_PLLRDY) == 0) { }
RCC->CFGR &= (uint32_t)((uint32_t)~(RCC_CFGR_SW));
RCC->CFGR |= (uint32_t)RCC_CFGR_SW_PLL;
while ((RCC->CFGR & (uint32_t)RCC_CFGR_SWS) != (uint32_t)0x08) { }

/* TIM2 */
RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;
TIM2->PSC = SystemCoreClock / 720 - 1;
TIM2->ARR = 10000;
TIM2->DIER |= TIM_DIER_UIE;
TIM2->CR1 |= TIM_CR1_CEN;   
NVIC_EnableIRQ(TIM2_IRQn); 


Поидее 72MHz с HSE 8x9, и таймер с 100000 тиками в секунду + прерывание по переполению раз в секунду - но чота нет прерываний..


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Для профи! STM32F10x MD - CMSIS - тактирование, прерыван
СообщениеДобавлено: Вт авг 15, 2017 16:06:30 
Собутыльник Кота
Аватар пользователя

Карма: 29
Рейтинг сообщений: 645
Зарегистрирован: Сб май 14, 2011 21:16:04
Сообщений: 2694
Откуда: г. Чайковский
Рейтинг сообщения: 0
Медали: 1
Получил миской по аватаре (1)
Я не профи, извиняйте что залез в данный топик ;).

Таймер считает? Глобальное разрешение прерываний включено? Обработчик прерывания имеет правильное имя?

_________________
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Для профи! STM32F10x MD - CMSIS - тактирование, прерыван
СообщениеДобавлено: Вт авг 15, 2017 18:38:51 
Сверлит текстолит когтями
Аватар пользователя

Карма: 25
Рейтинг сообщений: 168
Зарегистрирован: Ср янв 29, 2014 08:41:31
Сообщений: 1231
Откуда: Баку
Рейтинг сообщения: 0
Я тоже не профессионал, но могу поделиться своей инициализацией. Частота системная 48 МГц, но это вы уже сами поправите при желании.
Сравните со своей.
Спойлер
Код:

void init (void)
{
  unsigned long HSEStatus;
  unsigned int StartUpCounter;

  // Clock setup
  RCC->CR |= RCC_CR_HSEON;            // HSE clock enable

  /* Wait till HSE is ready and if Time out is reached exit */
  StartUpCounter = 0;
  do
  {
    HSEStatus = (RCC->CR & RCC_CR_HSERDY);   // Выделение бита HSEREADY
    StartUpCounter++; 
  }
    while((HSEStatus == 0) && (StartUpCounter != HSE_STARTUP_TIMEOUT));

  if (RCC->CR & RCC_CR_HSERDY)   // if HSE is UP
  {
// USBCLK = 48MHz
    RCC->CFGR |= RCC_CFGR_USBPRE;       // USB prescaler = 1
// PLLCLK = 48MHz
    RCC->CFGR |= RCC_CFGR_PLLMULL6;     // PLL multiplication factor = 6
// HSE = 8 MHz
    RCC->CFGR |= RCC_CFGR_PLLSRC_HSE;   // HSE as PLL input clock
// AHB clock = 12 MHz
    RCC->CFGR |= RCC_CFGR_HPRE_DIV4;    // AHB prescaler = /4
    RCC->CFGR |= RCC_CFGR_MCO_PLL;      // MCO = PLLCLK/2

// APB high-speed prescaler (APB2) not divided (12 MHz).
    RCC->CFGR &= ~RCC_CFGR_PPRE2;
// APB low-speed prescaler (APB1) not divided (12 MHz).
    RCC->CFGR &= ~RCC_CFGR_PPRE1;   
// ADC prescaler, ADCCLK = APB2/6 = 2MHz
    RCC->CFGR |= RCC_CFGR_ADCPRE_DIV6;
// PLL enable
    RCC->CR |= RCC_CR_PLLON;
// Wait for PLL ready
    while((RCC->CR & RCC_CR_PLLRDY) == 0);   
// SYSCLK = 48 MHz
    RCC->CFGR |= RCC_CFGR_SW_PLL;       // System clock switch = PLL
// Wait PLL as system clock
    while ((RCC->CFGR & RCC_CFGR_SWS_PLL) != RCC_CFGR_SWS_PLL);
  }
    else
    {
      // What to do if HSE failed.
      RCC->CR &= RCC_CR_HSEON;   // HSE oscillator OFF
      RCC->CR |= RCC_CR_HSION;   // Internal 8 MHz RC oscillator ON
      while((RCC->CR & RCC_CR_HSIRDY) == 0);   // Ожидание готовности HSI
      RCC->CFGR &= RCC_CFGR_PLLSRC_HSI_Div2;   // HSI/2 as PLL input clock
      RCC->CFGR |= RCC_CFGR_PLLMULL12;     // PLL multiplication factor = 12
    }
}

_________________
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Для профи! STM32F10x MD - CMSIS - тактирование, прерыван
СообщениеДобавлено: Вт авг 15, 2017 18:39:56 
Нашел транзистор. Понюхал.
Аватар пользователя

Карма: 5
Рейтинг сообщений: 21
Зарегистрирован: Пн июл 04, 2016 16:51:22
Сообщений: 196
Откуда: Россия, Омск
Рейтинг сообщения: 0
1. Между настройкой татового генератора и использованием переменной SystemCoreClock, не вижу вызова SystemCoreClockUpdate(), иначе там будет 8000000 (стандартная константа).
2. Кажется, немного не так должен настраиваться предделитель.
(8000000) / 720 - 1 = 11110.
ARR = 10000
Переполнение таймера произойдёт через:
(10000 * 11110) / 72000000 (тактовая частота) ~ 1,54секунды.
Ну это не столь критично.

3. Вроди бы... если правильно помню, лучше явно указывать значение.
TIM2->CR1 = TIM_CR1_ARPE | TIM_CR1_CEN;

А если 72МГц в переменной, то получим уже значительно бОльший интервал.


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Для профи! STM32F10x MD - CMSIS - тактирование, прерыван
СообщениеДобавлено: Вт авг 15, 2017 19:08:55 
Сверлит текстолит когтями
Аватар пользователя

Карма: 25
Рейтинг сообщений: 168
Зарегистрирован: Ср янв 29, 2014 08:41:31
Сообщений: 1231
Откуда: Баку
Рейтинг сообщения: 0
Забыл про таймер:
Спойлер
Код:
void t2set (void)
{
  // TIM2 clock enabled (12 MHz)
  RCC->APB1ENR |= RCC_APB1ENR_TIM2EN;
  // Counter used as downcounter:
  TIM2->CR1 = TIM_CR1_DIR;
  // Only counter overflow/underflow generates an update interrupt or DMA request if enabled:
  TIM2->CR1 |= TIM_CR1_URS;
  // Auto-reload preload enable (ARR)
  TIM2->CR1 |= TIM_CR1_ARPE;
  // Timer prescaler
  TIM2->PSC = 0x2EE0;     // 12000 * (1/12)us = 1ms = 1 Tick
  //TIM2->PSC = 12;           // 12 * (1/12)us = 1us = 1 Tick
  // Autoreload value
  TIM2->ARR = MS500 - 1;    // 500ms with 1ms tick
  //TIM2->ARR = 999;          // 1ms with 1us tick
  // Counter enabled:
  TIM2->CR1 |= TIM_CR1_CEN;
  // Initial value
  TIM2->DIER = 0;
  // Update interrupt enable:
  TIM2->DIER |= TIM_DIER_UIE;
  // Clear TIM2 flag
  TIM2->SR &= ~TIM_SR_UIF;
  // Interrupt enable:
  NVIC_EnableIRQ(TIM2_IRQn);
  // To freeze the Timer during debug when program pauses.
  DBGMCU->CR |= DBGMCU_CR_DBG_TIM2_STOP;
}

_________________
Каждый имеет право на свое личное ошибочное мнение.

У меня было тяжелое детство - я до 14 лет смотрел черно-белый телевизор.


Последний раз редактировалось Zhuk72 Ср авг 16, 2017 14:48:00, всего редактировалось 1 раз.

Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Для профи! STM32F10x MD - CMSIS - тактирование, прерыван
СообщениеДобавлено: Ср авг 16, 2017 13:15:36 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
V2oD2o,
как и чем проверяете?
Покажите хэндлер прерывания.
Подключен ли стартап?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Для профи! STM32F10x MD - CMSIS - тактирование, прерыван
СообщениеДобавлено: Чт авг 17, 2017 14:50:05 
Встал на лапы

Карма: 4
Рейтинг сообщений: 4
Зарегистрирован: Чт дек 09, 2010 12:03:08
Сообщений: 90
Откуда: Зеленоград
Рейтинг сообщения: 0
Я не профи, извиняйте что залез в данный топик ;).

Таймер считает? Глобальное разрешение прерываний включено? Обработчик прерывания имеет правильное имя?


Проблема была в c++, почему то g++ компилятор не переваривает вектор прерывания в startup..
Собственно отсюда следующий вопрос - как писать на плюсах под cmsis ? неужели надо отказаться от ООП и писать процедурно?

Всем большое спасибо что отозвались!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Для профи! STM32F10x MD - CMSIS - тактирование, прерыван
СообщениеДобавлено: Чт авг 17, 2017 15:00:09 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 253
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2090
Рейтинг сообщения: 0
Проблема была в c++, почему то g++ компилятор не переваривает вектор прерывания в startup..
Собственно отсюда следующий вопрос - как писать на плюсах под cmsis ? неужели надо отказаться от ООП и писать процедурно?

Насколько я понимаю проблема в банальном отсутствии extern "C"...
Код:
extern "C" void SysTick_Handler()
{
}

Хотя если стартап на С++, то это не нужно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Для профи! STM32F10x MD - CMSIS - тактирование, прерыван
СообщениеДобавлено: Чт авг 17, 2017 15:23:38 
Встал на лапы

Карма: 4
Рейтинг сообщений: 4
Зарегистрирован: Чт дек 09, 2010 12:03:08
Сообщений: 90
Откуда: Зеленоград
Рейтинг сообщения: 0
Насколько я понимаю проблема в банальном отсутствии extern "C"...
Код:
extern "C" void SysTick_Handler()
{
}

Хотя если стартап на С++, то это не нужно.


стартап на ассемблере .s

пишет:
startup_stm32.o:(.isr_vector+0xb0): undefined reference to `TIM2_IRQHandler'

что бы повторить эту ошибку у себя, достаточно создать пустой проект с функцией прерывания и main -> while(1) { }, переименовать main.c в .cpp - ну и добавить вектор в .s


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Для профи! STM32F10x MD - CMSIS - тактирование, прерыван
СообщениеДобавлено: Чт авг 17, 2017 15:42:32 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 253
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2090
Рейтинг сообщения: 0
startup_stm32.o:(.isr_vector+0xb0): undefined reference to `TIM2_IRQHandler'

что бы повторить эту ошибку у себя, достаточно создать пустой проект с функцией прерывания и while(1) { }, переименовать main.c в .cpp - ну и добавить вектор в .s

К счастью я такое повторить не могу, т.к. давно не пользуюсь стартапами на ассме :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Для профи! STM32F10x MD - CMSIS - тактирование, прерыван
СообщениеДобавлено: Чт авг 17, 2017 15:45:24 
Встал на лапы

Карма: 4
Рейтинг сообщений: 4
Зарегистрирован: Чт дек 09, 2010 12:03:08
Сообщений: 90
Откуда: Зеленоград
Рейтинг сообщения: 0
startup_stm32.o:(.isr_vector+0xb0): undefined reference to `TIM2_IRQHandler'

что бы повторить эту ошибку у себя, достаточно создать пустой проект с функцией прерывания и while(1) { }, переименовать main.c в .cpp - ну и добавить вектор в .s

К счастью я такое повторить не могу, т.к. давно не пользуюсь стартапами на ассме :)


Блин, затупил, вот же:

Код:
extern "C" void TIM2_IRQHandler() {
       TIM2->SR &= ~TIM_SR_UIF;
       GPIOC->ODR ^= GPIO_ODR_ODR13;
}


Код собрался, еще в работе не проверял)

Спасибо!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Для профи! STM32F10x MD - CMSIS - тактирование, прерыван
СообщениеДобавлено: Пн авг 21, 2017 16:48:30 
Опытный кот
Аватар пользователя

Карма: 13
Рейтинг сообщений: 163
Зарегистрирован: Сб дек 22, 2012 08:17:42
Сообщений: 744
Откуда: Караганда, Казахстан
Рейтинг сообщения: 0
Reflector писал(а):
К счастью я такое повторить не могу, т.к. давно не пользуюсь стартапами на ассме
Для STM32 первая часть стартапа всегда на асме, написана специалистами MCD Application Team. Для обсуждаемых здесь STM32F10x (x=1..7) их там аж целых три варианта.

V2oD2o писал(а):
TIM2->ARR = 10000;
А в регистр ARR надо помещать число, на единицу меньше требуемого, поскольку счетчик таймера считает от нуля до содержимого ARR включительно. И, если там будет 10000, прерывание произойдет после 10001-го импульса, а не после 10000-го. В руководстве об этом написано несколько невнятно, тем не менее это так. На остальные косяки, вроде-бы, уже указали...

_________________
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Для профи! STM32F10x MD - CMSIS - тактирование, прерыван
СообщениеДобавлено: Пн авг 21, 2017 17:06:07 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 253
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2090
Рейтинг сообщения: 0
Для STM32 первая часть стартапа всегда на асме, написана специалистами MCD Application Team. Для обсуждаемых здесь STM32F10x (x=1..7) их там аж целых три варианта

Прям таки всегда? И что же мешает написать стартап на С или даже С++?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Для профи! STM32F10x MD - CMSIS - тактирование, прерыван
СообщениеДобавлено: Вт авг 22, 2017 04:32:55 
Опытный кот
Аватар пользователя

Карма: 13
Рейтинг сообщений: 163
Зарегистрирован: Сб дек 22, 2012 08:17:42
Сообщений: 744
Откуда: Караганда, Казахстан
Рейтинг сообщения: 0
Вероятно тот факт, что ни в простом, ни в приплюснутом Си не существует нормальных средств положить в начало флеш-памяти программ таблицу векторов. Этот асмовый стартап, собственно и состоит из таблицы векторов и набора заглушек для тех векторов, которые не будут использоваться, чтобы линкер не обиделся на отсутствующие внешние ссылки. А чтобы он не обиделся на повторное объявление внешней ссылки, заглушки в стартапе объявлены слабыми (WEAK). Кстати, и этой возможности в Си я что-то не припомню...

А дальше - вызов SystemInit , переход к __main, и всё! Предложенные MCD Application Team варианты этих программ написаны на простом СИ, для приплюснутого Си в них предусмотрено extern "C" { ... } посредством условной компиляции. SystemInit содержит несколько вариантов тех самых действий, которые V2oD2o показал под комментарием /* CLOCK */, а __main производит необходимую настройку и вызывает main(). Собственно, никто не мешает написать свой вариант этих программ, но зачем? Разве что потренироваться, как это делает топикстартер...

_________________
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Для профи! STM32F10x MD - CMSIS - тактирование, прерыван
СообщениеДобавлено: Вт авг 22, 2017 06:44:43 
Друг Кота
Аватар пользователя

Карма: 32
Рейтинг сообщений: 482
Зарегистрирован: Сб сен 10, 2011 17:46:25
Сообщений: 3832
Рейтинг сообщения: 0
Плагин для Visual Studio VisualGDB из коробки создает проекты где стартап на Си и никаких в проекте асм файлов.
положить в начало флеш-памяти программ таблицу векторов делает типа так:
Код:
void * g_pfnVectors[0x30] __attribute__ ((section (".isr_vector"), used)) =
{
   &_estack,
   &Reset_Handler,
   &NMI_Handler,
   &HardFault_Handler,
   NULL,
   NULL,
   NULL,
   NULL,
   NULL,
   NULL,
   NULL,
   &SVC_Handler,
   NULL,
   NULL,
   &PendSV_Handler,
   &SysTick_Handler,
   &WWDG_IRQHandler,
........
}

размещение секции isr_vector расписано в файле линкера:
Код:
ENTRY(Reset_Handler)

MEMORY
{
   FLASH (RX) : ORIGIN = 0x08000000, LENGTH = 32K
   SRAM (RWX) : ORIGIN = 0x20000000, LENGTH = 4K
}

_estack = 0x20001000;

SECTIONS
{
   .isr_vector :
   {
      . = ALIGN(4);
      KEEP(*(.isr_vector))
      . = ALIGN(4);
   } > FLASH
..........
}

заглушки:
Код:
void NMI_Handler()                     __attribute__ ((weak, alias ("Default_Handler")));
void HardFault_Handler()               __attribute__ ((weak, alias ("Default_Handler")));
void SVC_Handler()                     __attribute__ ((weak, alias ("Default_Handler")));
......

https://visualgdb.com/?features=embedded


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Для профи! STM32F10x MD - CMSIS - тактирование, прерыван
СообщениеДобавлено: Вт авг 22, 2017 07:45:49 
Опытный кот
Аватар пользователя

Карма: 13
Рейтинг сообщений: 163
Зарегистрирован: Сб дек 22, 2012 08:17:42
Сообщений: 744
Откуда: Караганда, Казахстан
Рейтинг сообщения: 0
Круто!
Но, тем не менее, специалисты из MCD Application Team предпочли написать стартап на асме. Кстати, поразглядывал в отладчике код __main (исходника не нашел, да не очень-то и искал), похоже, он тоже на асме, слишком уж там навороченные операции с регистрами производятся, в дизасме сишного кода мне такое, вроде-бы, не попадалось, хотя точно не скажу.

_________________
Кто мешает тебе выдумать порох непромокаемый? (К. Прутков, мысль № 133)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Для профи! STM32F10x MD - CMSIS - тактирование, прерыван
СообщениеДобавлено: Вт авг 22, 2017 09:31:56 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 253
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2090
Рейтинг сообщения: 0
Плагин для Visual Studio VisualGDB из коробки создает проекты где стартап на Си и никаких в проекте асм файлов.

Я VisualGDB и юзаю, причем у меня стартап переписан на С++ и никакие extern "C" я не добавляю. Разницы в размере бинарника относительно С естественно нет.

Круто!
Но, тем не менее, специалисты из MCD Application Team предпочли написать стартап на асме. Кстати, поразглядывал в отладчике код __main (исходника не нашел, да не очень-то и искал), похоже, он тоже на асме, слишком уж там навороченные операции с регистрами производятся, в дизасме сишного кода мне такое, вроде-бы, не попадалось, хотя точно не скажу.

Нету там ничего на ассме, можно пройтись пошагово отладчиком и убедиться. Единственная функция __libc_init_array() которая вызывается из прекомпилированной либы написана на С, при отладке автоматически скачиваются ее сорсы и можно заходить и в нее тоже.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Для профи! STM32F10x MD - CMSIS - тактирование, прерыван
СообщениеДобавлено: Вт авг 22, 2017 10:42:02 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
Единственная функция __libc_init_array()


Это у тебя на плюсах.
В Keil :
Код:

*******************************************************************************
                 IF      :DEF:__MICROLIB           
               
                 EXPORT  __initial_sp
                 EXPORT  __heap_base
                 EXPORT  __heap_limit
               
                 ELSE
               
                 IMPORT  __use_two_region_memory
                 EXPORT  __user_initial_stackheap
                 


в SES в thumb_crt0.s :

_start:

в которой куча кода


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Для профи! STM32F10x MD - CMSIS - тактирование, прерыван
СообщениеДобавлено: Вт авг 22, 2017 11:01:47 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 253
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2090
Рейтинг сообщения: 0
Это у тебя на плюсах.

Понятно, что в Keil и большинстве других сред все на ассме, но мы тут обсуждали саму возможность написания стартапов на С/С++. Это возможно, причем без приложения каких-то сверхусилий. Получается компактный и понятный код который легко модифицировать и именно это должно быть в приоритете, а не желание сэкономить на стартапе 10 байт.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Для профи! STM32F10x MD - CMSIS - тактирование, прерыван
СообщениеДобавлено: Вт авг 22, 2017 11:37:33 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
Получается компактный и понятный код который легко модифицировать и именно это должно быть в приоритете, а не желание сэкономить на стартапе 10 байт.



А если подучить асм ...


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 22 ]  1,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 42


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y