ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Понедельник
20 мая
1399936 Топик полностью
Chum_A (05.02.2024 09:00, просмотров: 119) ответил IBAH на Как в Кортексе через CMSIS запретить/разрешить два прерывания сразу? У NVIC_DisableIRQ() аргумент перечислимый тип... Использовать содержимое функции? NVIC->ICER[0U] = (uint32_t)(1UL << (((uint32_t)(int32_t)IRQn) & 0x1FUL));
Цитата: "...Программное разрешение или запрещение прерываний может осуществляться с помощью инструкций CPSIE I и CPSID I. В CMSIS предусмотрены следующие встроенные функции, генерирующие эти инструкции: 

void __disable_irq(void) // Disable Interrupts

void __enable_irq(void) // Enable Interrupts"

Листинг от gcc:

/CMSIS/CortexM1/core_cmFunc.h **** This function disables IRQ interrupts by setting the I-bit in the CPSR.

/CMSIS/CortexM1/core_cmFunc.h **** Can only be executed in Privileged modes.

/CMSIS/CortexM1/core_cmFunc.h **** */

/CMSIS/CortexM1/core_cmFunc.h **** __attribute__( ( always_inline ) ) __STATIC_INLINE void __disable_irq(void)

/CMSIS/CortexM1/core_cmFunc.h **** {

/CMSIS/CortexM1/core_cmFunc.h **** __ASM volatile ("cpsid i" : : : "memory");