hi all
Нашел лишь один образец работы usart в 32f051, но он напрямую не встает, пришлось разбираться до составляющих, получилось:
CODE
void InitUsart1(void)
{
RCC->AHBENR |= (1UL<<17); // PORT A clock ON
RCC->APB2ENR |= (1UL<<14); // UART1 clock ON
GPIOA->AFR[1] &= ~(1UL<<7); // set pinA9 as UART
GPIOA->AFR[1] |= (7UL<<4); // set pinA9 as UART
GPIOA->AFR[1] &= ~(1UL<<11); // set pinA10 as UART
GPIOA->AFR[1] |= (7UL<<8); // set pinA10 as UART
GPIOA->OSPEEDR |= (3UL << 2*9) ; // 50 MHz
GPIOA->OSPEEDR |= (3UL << 2*10) ; // 50 MHz
GPIOA->MODER |= (1UL << (2*9 +1 )); //
GPIOA->MODER &= ~(1UL << (2*9 ));
GPIOA->MODER |= (1UL << (2*10 +1 )); //
GPIOA->MODER &= ~(1UL << (2*10 ));
GPIOA->OTYPER &= ~(3UL<<9); // portA9 A10 push pull
GPIOA->PUPDR &= ~(5UL << 19); // pull up
GPIOA->PUPDR |= (5UL << 18); // pull up
USART1->BRR = 0x0683;
USART1->CR1 &= ~( 1UL<<12) ; // m-bit 8 bits
USART1->CR2 &= ~ (3UL << 12 ) ; //~USART_CR2_STOP; //1 stop bit
USART1->CR1 &= ~( 1UL<<10) ; // parity none
USART1->CR3 &= ~( 1UL<<9) ; // flow control
USART1->CR1 |= (3UL <<2); //Transmit enable 0x08 0x04
USART1->CR1 |= 1UL; //usart1 enable }
вывожу раз в 10 мс по tim6
while(!(USART1->ISR & (1<<6)));
USART1->TDR = 0xAA;
На ноге тх uart1 ничего нет.
Может, кто пример работы встречал uart на f051? В даташите написано, что портировать с f1xx код нельзя.
Сообщение отредактировал IgorKossak - Mar 1 2013, 22:03
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!!!