Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: USART STM32F103
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
MiklPolikov
Вроде бы настраиваю USART и передаю байт, а на ноге PA2 TX ничего нет, всегда высокий уровень. Подскажите, что я делаю неправильно ?

Код
   /////////////////настройка порта ///////////////////

   RCC->APB2ENR |= RCC_APB2ENR_IOPAEN;

   //No remap (CTS/PA0, RTS/PA1, TX/PA2, RX/PA3, CK/PA4)
   AFIO->MAPR &=~ AFIO_MAPR_USART2_REMAP;  

  //UART TX //выход
   GPIOA->CRL &=~ GPIO_CRL_CNF3;
   GPIOA->CRL |= GPIO_CRL_CNF3_1;
   GPIOA->CRL |= GPIO_CRL_MODE3;

  //UART RX  //вход
   GPIOA->CRL &=~ GPIO_CRL_CNF2;
   GPIOA->CRL |= GPIO_CRL_CNF2_0;
   GPIOA->CRL &=~ GPIO_CRL_MODE2;  


  /////////////////настройка USART //////////////////

   RCC->APB1ENR|=RCC_APB1ENR_USART2EN;

   RCC->APB1RSTR|=RCC_APB1RSTR_USART2RST;
   RCC->APB1RSTR &=~ RCC_APB1RSTR_USART2RST;

   //для получения бодрейта 9600 при частоте 36МГц   делитель = 234.375   => 0.375 * 16 = 6
   USART2->BRR=(134<<4)|(6<<0);
  
   USART2->CR1 |=USART_CR1_TE; //передача включена
   USART2->CR1 |=USART_CR1_RE;  //приём включен

   USART2->CR1|=USART_CR1_UE;  //включили USART
  

  ////////////////передаём байт ////////////////////
  while(1)
{
   while(!(USART2->SR & USART_SR_TXE)){}
   USART2->DR=123;
   while(!(USART2->SR & USART_SR_TC)){}
}
gerber
Настройка ног PA2 и PA3 перепутана.
AHTOXA
Надо включить тактирование альтернативных функций:
Код
RCC->APB2ENR  |= RCC_APB2ENR_AFIOEN;
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.