ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Воскресенье
5 мая
1364544 Топик полностью
Eddy_Em (23.10.2023 19:39, просмотров: 285) ответил Eddy_Em на А нет ли у кого нормального сишного стартапа для CH32V003 и CH32V203?
Вот блин, хочется сделать так: 
#define IRQ_HANDLERS \
    [NonMaskableInt_IRQn] = NMI_Handler, \
    [EXC_IRQn] = HardFault_Handler, \
...

Однако, в этом случае секция .vectors должна стартовать там же, где секция .init. А компилятор ругается...

Наверное, проще будет через жопу сделать:

#define IRQ_HANDLERS \
    [NonMaskableInt_IRQn-1] = NMI_Handler, \
    [EXC_IRQn-1] = HardFault_Handler, \
...

Кстати, если написать:

void __attribute__((used, naked, section(".init"))) __init_default(){
extern uint32_t __global_pointer$; extern uint32_t _eusrstack; setGP(&__global_pointer$); setSP(&_eusrstack); __asm volatile ("j reset_handler;"); }

, то код займет целых 16 байт, а можно лишь 8 под всякую фигню израсходовать, т.к. дальше уже вектора прерываний идут.

eddy-em.livejournal.com github.com/eddyem