Jump to content

    

STM32F373 и прерывание по Character Match

Доброго времени суток!

Пытаюсь заставить 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.

Никто кроме этих строчек в данный регистр не пишет - прерывания на время инициализации запрещены.

Эррата тоже вроде ничего не говорит о данном "феномене"...

Не сталкивался ли кто с таким поведением и если да - как решали.

Заранее спасибо.

 

Share this post


Link to post
Share on other sites

Может это спасет отца русской демократии

 

Quote

This bit field can only be written when reception is disabled (RE = 0) or the USART is disabled 
(UE=0)

 

Share this post


Link to post
Share on other sites
12 minutes ago, seniorandre said:

Может это спасет отца русской демократии

 

 

Большое спасибо! Действиткельно спасло! Не дочитал :-)

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this