Ошибка в коде MDR32F9Qx_mil_std_1553.c функция MIL_STD_1553_Cmd
nw53harry opened this issue · comments
Функция должна сбрасывать и устанавливать бит MR но устанавливает еще несколько старших бит,
и сбивает раннее сделаные настройки (ошибка из за неправильгого значения MR_EN_Reset),
предлагается такой вариант:
void MIL_STD_1553_Cmd(MDR_MIL_STD_1553_TypeDef * MIL_STD_1553x, FunctionalState NewState)
{
/* Check the parameters */
assert_param(IS_MIL_STD_1553_ALL_PERIPH(MIL_STD_1553x));
assert_param(IS_FUNCTIONAL_STATE(NewState));
if(NewState == ENABLE){
/* Enable the selected MIL_STD_1553 by clearingsetting the MR bit in the CONTROL register */
MIL_STD_1553x->CONTROL &= ~MR_EN_Set;
}
else{
/* Disable the selected MIL_STD_1553 by setting the MR bit in the CONTROL register */
MIL_STD_1553x->CONTROL |= MR_EN_Set; // setting only the MR bit in the CONTROL register
//MIL_STD_1553x->CONTROL |= ~MR_EN_Reset; // it is wrong, unnecessary high bits are set! (оставил ошибку для сравнения)
}
}
Уже не поддерживаю данный репозиторий, но могу слить ваши изменения (под вашу ответственность), если откроете Pull request
Fixed #60