ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Пятница
22 ноября
1311832 Топик полностью
LightElf (22.05.2023 17:30, просмотров: 297) ответил Nikolay_Po на Вариант скиньте, интересно. Насчёт ассемблерных вставок - это было сделано Liviu Ionescu и сподвижниками для µOS++, только что поискал, оно по ссылке и, вроде развивается тем же человеком.
Ну вот как-то так. Оно под иар, но интринсики в CMSIS одинаковые. 
// кадр стека, создаваемый исключением
typedef struct fault_frame_s
{
    uint32_t   stacked_R0;    // 00
    uint32_t   stacked_R1;    // 04
    uint32_t   stacked_R2;    // 08
    uint32_t   stacked_R3;    // 0C
    uint32_t   stacked_R12;   // 10
    uint32_t   stacked_LR;    // 14
    uint32_t   stacked_PC;    // 18
    uint32_t   stacked_xPSR;  // 1C
} fault_frame_t;
// кадр исключения (для отладки) __no_init __root fault_frame_t fault_frame;
// обработчик исключения
__stackless void hard_fault_isr(void)
{
if (__get_CONTROL() & 2)
{
(void)memcpy(&fault_frame, (void*)__get_PSP(), sizeof(fault_frame_t));
}
else
{
(void)memcpy(&fault_frame, (void*)__get_MSP(), sizeof(fault_frame_t)); }
while(1)
{
}
}
Не надо делать мне как лучше, оставьте мне как хорошо