реклама на сайте
подробности

 
 
2 страниц V  < 1 2  
Reply to this topicStart new topic
> STM32F100RB не выполняет инструкцию "IT NE"?
paskal
сообщение Jun 27 2013, 20:19
Сообщение #16


Местный
***

Группа: Свой
Сообщений: 352
Регистрация: 29-10-06
Из: Тула
Пользователь №: 21 769



Цитата(_Артём_ @ Jun 27 2013, 23:19) *
Как правило проблема в исходниках - туда и смотреть.

А вы не замечали, что самый первый файл исходника на ассемблере написан? И, например, основная функция main() из ассемблера вызывается?
(говорю про кейл, с ИАРом не работал)
Go to the top of the page
 
+Quote Post
adnega
сообщение Jun 28 2013, 04:33
Сообщение #17


Гуру
******

Группа: Свой
Сообщений: 2 724
Регистрация: 14-05-07
Из: Ярославль, Россия
Пользователь №: 27 702



Цитата(paskal @ Jun 28 2013, 00:19) *
А вы не замечали, что самый первый файл исходника на ассемблере написан? И, например, основная функция main() из ассемблера вызывается?
(говорю про кейл, с ИАРом не работал)

Не факт. Для Cortex-M стартап вполне можно написать на C.
CODE

//-----------------------------------------------------------------------------
// Объявления обработчиков прерываний (векторов)
//-----------------------------------------------------------------------------
void NMIException(void);
void HardFaultException(void);
void MemManageException(void);
void BusFaultException(void);
void UsageFaultException(void);
void DebugMonitor(void);
void SVCHandler(void);
void PendSVC(void);
void SysTickHandler(void);
...

//-----------------------------------------------------------------------------
// Указатели секций линкера
//-----------------------------------------------------------------------------
extern unsigned long _sidata; //!< Начало инициализируемых данных.
extern unsigned long _sdata; //!< Начало секции .data.
extern unsigned long _edata; //!< Конец секции .data.
extern unsigned long _sbss; //!< Начало секции .bss.
extern unsigned long _ebss; //!< Конец секции .bss.
extern unsigned long _estack; //!< Начало стека.

//-----------------------------------------------------------------------------
// Определение функций
//-----------------------------------------------------------------------------
void Reset_Handler(void) __attribute__((__interrupt__));
extern int main(void);

//-----------------------------------------------------------------------------
// Таблица векторов прерываний
//-----------------------------------------------------------------------------
typedef void (*t_vector)(void);

__attribute__ ((section(".isr_vector")))
const t_vector vectors[] =
{
(t_vector)&_estack,
Reset_Handler,
NMIException,
HardFaultException,
MemManageException,
BusFaultException,
UsageFaultException,
0,
0,
0,
0,
SVCHandler,
DebugMonitor,
0,
PendSVC,
SysTickHandler,
...
};

//-----------------------------------------------------------------------------
//! \fn void Reset_Handler(void)
//! \brief Вектор сброса.
//-----------------------------------------------------------------------------
void Reset_Handler(void)
{
unsigned long *pulSrc, *pulDest;

// Инициализация данный в секции .data
pulSrc = &_sidata;
for(pulDest = &_sdata; pulDest < &_edata; )
{
*(pulDest++) = *(pulSrc++);
}

// Обнуление данных в секции .bss
for(pulDest = &_sbss; pulDest < &_ebss; )
{
*(pulDest++) = 0;
}

// Вызов функции main
main();
}

Go to the top of the page
 
+Quote Post

2 страниц V  < 1 2
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 8th July 2025 - 03:05
Рейтинг@Mail.ru


Страница сгенерированна за 0.01481 секунд с 7
ELECTRONIX ©2004-2016