Здраствуйте!
есть плата от WaveShare с МК STM32F746IGT6, в процессе изучения написал такой код
;Включаем системный бит TRCENA
MOV32 R0, SCB_DEMCR
LDR R1, [R0]
ORR R1, #(1 << 24)
STR R1, [R0]
;снимаем блокировку
MOV32 R0, DWT_LAR
MOV32 R1, #0xC5ACCE55
STR R1, [R0]
;очищаем счетчик CYCCNT
MOV32 R5, DWT_CYCCNT
STR R10, [R5]
;Разрешаем DWT
MOV32 R0, DWT_CTRL
LDR R1, [R0]
ORR R1, R11 ;в нулевой бит CYCCNTENA регистра DWT_CTRL записываем 1. тем самым
STR R1, [R0] ;включаем счетчик CYCCNT, запускаем его
NOP ;1 5
NOP ;2 5
NOP ;3 6
NOP ;4 5
NOP ;5 10
NOP ;6 10
NOP ;7 11
NOP ;8 11
NOP ;9 12
NOP ;10 12
NOP ;11 13
NOP ;12 13
NOP ;13 14
NOP ;14 14
NOP ;15 15
NOP ;16 15
NOP ;17 25
NOP ;18 25
NOP ;19 26
LDR R3, [R5]
расшифрую колонку с нопами, писался один ноп, МК прошивался, на дисплее который подключен к МК я видел значение счетчика CYCCNT, в комментариях напротив нопа записывал номер нопа и число которое выводилось на дисплей- значение CYCCNT. И так по кругу.
Например при 19 нопах значение CYCCNT = 26.
Явно видна нелинейность значений.
С чем это может быть связано и как это побороть?
Может быть кто-то у кого есть подобный МК прогонит мой код на своем МК хотя бы в нескольких точках, например что покажет у Вас CYCCNT при 19 нопах
спасибо