ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
21 ноября
1221218 Топик полностью
Связанные сообщения
Macro
есть метод енум в строку преобразовать?2022-07-12
Классика жанра же: когда делаешь макрос, его всегда, кроме случаев когда невозможно, нужно делать выражением (а не оператором --...2020-09-11
К сожалению openwatcom реально стар. Это код для условно современного C-компилятора, поддерживающего C99. У openwatcom не полноф...2019-12-11
Можно просто енумы генерировать через макрос, который сгенерирует и энум, и inline-функцию принимающую данный enum и возвращающу...2019-12-11
Я на нечто подобное нарывался. Теперь вся отладка складывается в FIFO, только потом ее обрабатываю.2017-11-24
Dingo (06.07.2022 12:55, просмотров: 333) ответил Aleksey_75 на можно и через "?" но мне никогда не требовалось, при любой оптимизации все на месте.. у меня по такому принципу половина периферии настраивается
Вчерне получилось, так вот 
#define TMR_time TMR3
// c-file//
const struct tmr_x_str timers[5] = { { TMR0, TMR0_IRQn}, { TMR1, TMR1_IRQn}, { TMR2, TMR2_IRQn}, { TMR3, TMR3_IRQn}, { TMR4, TMR4_IRQn}, };
#define Tim_Irq(T) (\ (T == TMR0) ? timers[0].IRQn :\ (T == TMR1) ? timers[1].IRQn :\ (T == TMR2) ? timers[2].IRQn :\ (T == TMR3) ? timers[3].IRQn :\ timers[4].IRQn )// Apply:
uint32_t oldIrq = sysInstallISR(HIGH_LEVEL_SENSITIVE | IRQ_LEVEL_1, /*TMR0_IRQn*/ Tim_Irq( TMR_time), (PVOID)TMR_M_IRQHandler);


На выходе при arm-none-eabi-gcc -mcpu=arm926ej-s -marm -mlittle-endian -mfloat-abi=soft -O0

	uint32_t oldIrq = sysInstallISR(HIGH_LEVEL_SENSITIVE | IRQ_LEVEL_1, /*TMR0_IRQn*/ Tim_Irq( TMR_time), (PVOID)TMR_M_IRQHandler);
    5808:	e3a0301f 	mov	r3, #31
    580c:	e59f203c 	ldr	r2, [pc, #60]	; 5850 <TimeInit+0x54>
    5810:	e1a01003 	mov	r1, r3
    5814:	e3a00041 	mov	r0, #65	; 0x41
    5818:	eb004d87 	bl	18e3c <sysInstallISR>
    581c:	e1a03000 	mov	r3, r0
    5820:	e50b3008 	str	r3, [fp, #-8]

По 0x5808 как раз загрузка константы. Можно попараноить и Т завернуть в скобки, добавить в конце защитное значение, - но уже работает как хотелось.