ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
1 мая
1042023 Топик полностью
evgeniy1294 (04.10.2020 16:39, просмотров: 415) ответил teap0t на Такой код завернёт MISRA: у кейса должно быть не менее трёх веток. Ассерт на входе есть. С этим там строго.
Тут сразу вопрос в вам. А MISRA разве не запрещает приводить число к сырому указателю или работать с памятью через смещение от этого указателя? Смысл моего вопроса в том, что CMSIS генерируется машиной и позволяет работать с размеченной памятью: 
EXTI->EMR = val;

А вот это вот чистейшая указательная магия:

uint32_t tmp;
tmp = (uint32_t)EXTI_BASE;          
// ...
tmp += EXTI_InitStruct->EXTI_Mode;   
*(__IO uint32_t *) tmp |= EXTI_InitStruct->EXTI_Line;

Если мисра такое пропускает, то целесообразность данного стандарта сомнительна. На сколько я помню там нельзя работать с указателями, по крайней мере работа с массивами была только через индексы с обязательной проверкой границ.