ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Вторник
26 ноября
461206 Топик полностью
SciFi (07.11.2013 22:38, просмотров: 132) ответил Леонид Иванович на Это не ответ.
Правильный стартап ниже. Всё остальное - от лукавого. Это для Sourcery. #include "stm32f2regs.h" #include "cs3.h" #include <string.h> extern void __libc_init_array(void); extern int main(); union intvec_elem { void (*fptr)(void); void *dptr; }; static void trap(void) { for (;;) { /* it's a trap! */ } } static union intvec_elem vectab[] __attribute((used, section(".cs3.vectab"))) = { { .dptr = __cs3_stack }, { __cs3_start_c }, { trap }, /* NMI */ { trap }, /* HardFault */ { trap }, /* MemManage */ { trap }, /* BusFault */ { trap }, /* UsageFault */ { 0 }, { 0 }, { 0 }, { 0 }, { trap }, /* SVC */ { trap }, /* DebugMon */ { 0 }, { trap }, /* PendSV */ { trap }, /* SysTick */ }; static void mcu_init(void) { uint32_t tmp = 0x0703; FLASH_ACR = tmp; /* 3 wait states, acceleration enabled */ while (FLASH_ACR != tmp) { /* wait */ } RCC_PLLCFGR = 0x080030CD; /* M=13, N=195, P=2, Q=8 */ REGBIT(RCC_CR, 24) = 1; /* PLL on */ RCC_CFGR = 0x00009402; /* use PLL as clock source */ } void __attribute ((noreturn)) __cs3_start_c(void) { const struct __cs3_region* r = &__cs3_regions[0]; mcu_init(); /* Initialize memory */ memcpy(r->data, r->init, r->init_size); memset(r->data + r->init_size, 0, r->zero_size); /* Run initializers. */ __libc_init_array(); (void)main(); for (;;) {} }
ส็็็็็็็็็็็็็็็็็็็็็็็็็༼ ຈل͜ຈ༽ส้้้้้้้้้้้้้้้้้้้้้้้