Купил USB-UART преобразователь на FT232RL
Начал понемногу используя "кухаркины статьи" xD писать свой код)))
Сначала ни приема ни передачи на комп/с компа не было. Затем я догадался что надо на PA9 подключить альтернативную функцию.
Затем где-то вычитал, что для приема так же на PA10 надо альтернативную функцию повесить. В итоге Передача работает (Но не совсем так как я ожидал). Косяк в том. что в терминале я вижу не то что программа отсылает.
Например пробовал отсылать 1 (даже в наглую USART1->DR = 1;) в терминале вижу E0
А при приеме прерывания совсем не вызываются(((
Код: Выделить всё
#include "stm32f4xx.h"
void USART1_IRQHandler()
{
if (USART1->SR & USART_SR_RXNE) {
USART1->SR&=~USART_SR_RXNE;
if(USART1->DR=='1') {
GPIOD->ODR = 0xF000;
}
}
}
int main()
{
RCC->APB2ENR |= RCC_APB2ENR_USART1EN|RCC_APB2ENR_SYSCFGEN;;
RCC->AHB1ENR |= RCC_AHB1ENR_GPIOAEN|RCC_AHB1ENR_GPIODEN;
GPIOD->MODER|= 0x55000000;
GPIOD->OTYPER = 0;
GPIOD->OSPEEDR = 0;
GPIOA->MODER |= 0x80000;
GPIOA->AFR[1] |= 0x770;
GPIOA->OTYPER = 0;
USART1->CR1 |= USART_CR1_UE|USART_CR1_RE|USART_CR1_TE;
USART1->BRR |=0x9c4;
USART1->CR1 |= USART_CR1_RXNEIE;
NVIC_EnableIRQ (USART1_IRQn);
__enable_irq ();
while(1)
{
while(!(USART1->SR & USART_SR_TC));
USART1->DR = 'H';
for(uint32_t i = 0; i < 2000000; i++);
}
}





