Пт ноя 03, 2023 14:49:08
FLG_1MS_BIT EQU 0x08 ; какой-нибудь флаг, например что прошла 1 мс
AREA __data, DATA, READWRITE
FLAGS DCD 0 ; кусок памяти где все флаги собраны
END
include C:\KEIL\ARM\Projects\stm32f10x.asm ;определения регистров и прочего
include C:\KEIL\ARM\Projects\MacroSTM.asm
include Define.s
EXPORT FLAGS ;чтобы было видно в других модулях
EXPORT FLG_1MS_BIT
[...] ;тут всякий код...
LOOP
LDR R0,=FLAGS ;проверяем флаг
LDR R1,[R0]
TST R1,ONE, LSL #FLG_1MS_BIT
BLNE EXEC_1MS_TIMER ;если прошла 1мс, переход на обработчик
B LOOP
ENDP
END
include C:\KEIL\ARM\Projects\stm32f10x.asm
include C:\KEIL\ARM\Projects\MacroSTM.asm
EXTERN FLAGS
EXTERN FLG_1MS_BIT
[...] ;тут всякий код...
ISR_SYSTIMER PROC ;обработчик прерывания SysTick, раз в 1мс
PERIH_BIT_CONTROL SET,GPIOC_ODR,GPIO_ODR_ODR13 ;импульс, чтобы видеть частоту осциллографом
LDR R0,=FLAGS ;читаем адрес флагов, тут без проблем
LDR R1,[R0] ;загружаем флаги
BFI R1,ONE,#FLG_1MS_BIT,#1 ;выставляем нужный бит (ONE=R11=#0x01, определено в макросах)... А ВОТ НИФИГА, не работает!!!
STR R1,[R0] ;сохраняем флаги
PERIH_BIT_CONTROL CLEAR,GPIOC_ODR,GPIO_ODR_ODR13 ;задний фронт импульса
BX LR
ENDP
Пт ноя 03, 2023 16:49:20
Пт ноя 03, 2023 19:47:14
Пт ноя 03, 2023 20:20:15
Пт ноя 03, 2023 21:17:39
Вс ноя 05, 2023 01:52:22
Вс ноя 05, 2023 07:37:36
Вс ноя 05, 2023 13:20:04
Пн ноя 06, 2023 09:21:54
Пн ноя 13, 2023 19:29:16