Цитата(NikP @ Jun 17 2014, 11:16)

На основе примера от STM написал свою программу. Но есть одна тонкость - надо чтоб один из циклов не прерывался (выполнялся за определённое время). А реально случайным образом длительность "дёргается"- подозреваю , что происходит прерывание в программе-исходнике. Вопросы такие: можно ли определить, какое прерывание происходит ( может, есть регистр, в котором сохраняется информация, или в отладчике кейл-микровижен)?Как запретить ВСЕ прерывания на время цикла ?
Узнать прерывание можно из регистра IPSR.
Считать регистр можно "msr r0,IPSR".
Младшие 9 бит указывают текущее состояние процессора:
Цитата
ISR_NUMBER:
This is the number of the current exception:
0: Thread mode
1: Reserved
2: NMI
3: Hard fault
4: Memory management fault
5: Bus fault
6: Usage fault
7: Reserved
....
10: Reserved
11: SVCall
12: Reserved for Debug
13: Reserved
14: PendSV
15: SysTick
16: IRQ0(1)
....
....
83: IRQ67(1)
see Exception types on page 34 for more information.
Запретить можно либо ВСЕ прерывания (с конфигурируемым приоритетом) через PRIMASK, либо с уровнем не ниже чем в BASEPRI.
Буквально вчера сделал, чтоб отладочные сообщения выводились в xterm разными цветами в зависимости от источника.