Доброго времени суток!
Пытаюсь заставить UART STM32F373 гененрировать прерывание по Character Match. Для этого, в частности, необходимо записать ожидаемый символ (в моем случае - CR = 0x0D) в регистр USART1->CR2 начиная с 24го бита.
Использую STM32F3-HAL
В прцедуре инициализации UART:
//Setup interrupt on Character Match
__HAL_UART_CLEAR_FLAG(&hUart1, UART_CLEAR_CMF);
__HAL_UART_ENABLE_IT(&hUart1, UART_IT_CM);
//Character Match on CR ('\r' = 0x0D)
MODIFY_REG(hUart1.Instance->CR2, USART_CR2_ADD, ((uint32_t)(0x0D)) << USART_CR2_ADD_Pos);
Безрезультатно... в CR2 - нули
Пробую запись в лоб:
//Character Match on CR ('\r' = 0x0D)
hUart1.Instance->CR2 = 0x0D000000;
Или даже так
//Character Match on CR ('\r' = 0x0D)
*((uint32_t*)0x40013804UL) = 0x0D000000;
Результат - тот же - нули в CR2.
Никто кроме этих строчек в данный регистр не пишет - прерывания на время инициализации запрещены.
Эррата тоже вроде ничего не говорит о данном "феномене"...
Не сталкивался ли кто с таким поведением и если да - как решали.
Заранее спасибо.