В настоящее время я учусь работать с stm32f411re. Я использую PA9 / 10 в качестве TX и RX со скоростью передачи 9600 и 1 стартовое 8-битное слово и 1 стоп без четности. Я подключил PA9 / PA10 с FTDI к своему P C, и я пытаюсь отправить с последовательного терминала. Попытка сделать это с прерываниями. Как я вижу из отладчика, он входит в ISR, но повторяет неправильные символы. 16 МГц R C осциллятор был использован в качестве clk. Нет прескалеров. Дискретизация по умолчанию (16). Спасибо за ваше время
#include "stm32f4xx.h"
#include "system_stm32f4xx.h"
#define DELAY 0xFFFFFFFF
#define SEK 16000000
void USART1_IRQHandler (void) ;
int main() {
RCC->AHB1ENR|=(1<<0); //GPIOA
RCC->APB2ENR|=(1<<4); // Clock za USART1
GPIOA->MODER|=(1<<10);
GPIOA->MODER|=0x3;
GPIOA->MODER|=0x280000; //PA9 I PA10 ALTERNATIVE MODE
GPIOA->AFR[1]|=0x770; //0111 AF07
USART1->CR1|=(1<<13); //enable usart
USART1->BRR=0x683; //9600
USART1->CR1|=((1<<3) | (1<<2)); //TX I RX ENABLE
USART1->CR1|=(1<<5); //ENABLE USART INTERRUPT RECEIVE
__NVIC_EnableIRQ( USART1_IRQn );
USART1->DR='a';
while(1){
}
return 0;
}
void USART1_IRQHandler (void)
{
char c;
c=USART1->DR;
USART1->DR=c;
}