реклама на сайте
подробности

 
 
> STN32F107 SYSCLK = 72 MHz, частота USART1
smk
сообщение Nov 15 2013, 18:52
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446



Пытаюсь запустить отладку по USART. Как ни считаю USART1->BRR а все никак не могу получить нормальную передачу. Принимается совсем не то, передается. Раньне как-то на stm32f207 такой проблемы небыло. Что не так? Спасибо.
Код
void USART1_Init (void)
{
    unsigned int integerdivider, tmpreg, fractionaldivider;


    RCC->APB2ENR |= (1u<<2);
  /* Configure PA9 as alternate function push-pull */
    GPIOA->CRH &= ~(1u<<6);
    GPIOA->CRH |=(1u<<4)|(1u<<5)|(1u<<7);        
  /* Configure PA10 as input */
    GPIOA->CRL &= ~((1u<<8)|(1u<<9)|(1u<<11));
    GPIOA->CRL |=(1u<<10);        

  /* Determine the integer part */
  integerdivider = ((0x19 * fclk) / (0x04 * (115200)));
  tmpreg = (integerdivider / 0x64) << 0x04;
  /* Determine the fractional part */
  fractionaldivider = integerdivider - (0x64 * (tmpreg >> 0x04));
  tmpreg |= ((((fractionaldivider * 0x10) + 0x32) / 0x64)) & ((uint8_t)0x0F);
  /* Write to USART BRR */
// USARTx->BRR = (unsigned short)tmpreg;
    
    RCC->APB2ENR |= (1u<<14);
    USART1->BRR = (unsigned short)tmpreg;//313UL; //115200
    USART1->CR1 |= (1UL<<2)|(1UL<<3)|(1UL<<13);
}

void BYTE_Transmit_USART1 (unsigned char data)
{
    USART1->DR = data;
    while (!(USART1->SR & (1UL << 6)));
    USART1->SR &= ~(1UL << 6);    
}

//это передача.
for(i=0; i<10; i++)
{
BYTE_Transmit_USART1(0xAA);
}


--------------------
Живи днем так, чтобы ночью ты спал спокойно.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Genadi Zawidowsk...
сообщение Nov 18 2013, 20:03
Сообщение #2


Профессионал
*****

Группа: Участник
Сообщений: 1 620
Регистрация: 22-06-07
Из: Санкт-Петербург, Россия
Пользователь №: 28 634



Цитата
Вот код, имеющийся в сухом остатке. Кто подскажет что не так?

Вам уже советовали - замените магические числа на именованные константы. Я посчитал битики и нашёл ошибку, которой могло бы не быть, если Вы бы пользовались родными #define.
Цитата
А вот это что такое?

Код
arm_hardware_pioa_periphout_altfn2(GPIO_ODR_ODR9, 255);    // TX DATA line (2 MHz)
    arm_hardware_pioa_inputs(GPIO_ODR_ODR10);        // RX data line

Вот просто rocket sience... Как Вы вообще программированием занимаетесь? Ну не обращайте внимания на второстеепнные для понимания вещи... У Вас в программе есть аналогичный кусок, только он настроен на работу с двумя битами в PIOA, это универсальные функциии...
Если что, исходник лежит вот тут https://188.134.5.254/export/616/trunk/hardware.c - строка 2600 и 1320

И что за пляски со status register? Сделайте прямо:
Код
    while ((USART1->SR & USART_SR_TXE) == 0)
;
    USART1->DR = c;


Сообщение отредактировал Genadi Zawidowski - Nov 18 2013, 20:20
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- smk   STN32F107 SYSCLK = 72 MHz   Nov 15 2013, 18:52
- - Genadi Zawidowski   У меня (для stm32f1xx) вот так считается: Код /* ...   Nov 15 2013, 19:36
- - smk   Так я и делаю. Уже все перепробовал. Удивление нео...   Nov 15 2013, 19:36
- - Aleksandr Baranov   Может такое вставить и посмотреть, чему равна apbc...   Nov 15 2013, 20:22
|- - 1113   Цитата(Aleksandr Baranov @ Nov 15 2013, 23...   Nov 15 2013, 20:28
- - Сергей Борщ   QUOTE (smk @ Nov 15 2013, 21:52) CODE /*...   Nov 15 2013, 21:01
- - smk   У меня выходит будто USART1->DR = 0xAA;//data; ...   Nov 16 2013, 08:18
|- - AHTOXA   У вас не включено тактирование альтернативных функ...   Nov 16 2013, 11:58
|- - smk   Цитата(AHTOXA @ Nov 16 2013, 13:58) У вас...   Nov 16 2013, 13:14
|- - AHTOXA   Цитата(smk @ Nov 16 2013, 19:14) А на сче...   Nov 16 2013, 14:40
|- - smk   Цитата(AHTOXA @ Nov 16 2013, 16:40) Неуже...   Nov 18 2013, 07:15
|- - smk   Цитата(AHTOXA @ Nov 16 2013, 16:40) Вот у...   Nov 18 2013, 15:23
|- - AHTOXA   Сначала настраиваем ноги, потом настраиваем UART, ...   Nov 18 2013, 17:38
|- - smk   Цитата(AHTOXA @ Nov 18 2013, 19:38) Снача...   Nov 18 2013, 18:17
- - Genadi Zawidowski   ЦитатаНе помогло Приведите изменённый код здесь. С...   Nov 16 2013, 13:55
- - smk   От безысходности подключил осциллограф. Установил ...   Nov 21 2013, 17:20
- - smk   Опытным путем удалось выяснить, что частота усарта...   Nov 21 2013, 19:46
- - Golikov A.   ПЛЛ не настроился и вы на внутренний кварц свалили...   Nov 21 2013, 20:07
- - smk   Я житагом просматривал регистры, пошагово проходя ...   Nov 22 2013, 07:32
- - Golikov A.   ну и что, на заборе тоже написано.... то что в рег...   Nov 22 2013, 08:41
- - smk   Осциллограф есть. Да, както нужно пройтись по этим...   Nov 22 2013, 08:53
- - smk   Посмотрел ситуацию с тактированием. Получается так...   Nov 24 2013, 14:09
- - OlegH   В системной библиотеке от ST, в модуле stm32f10x_r...   Nov 24 2013, 15:13
- - smk   Цитата(OlegH @ Nov 24 2013, 17:13) В сист...   Nov 24 2013, 15:27
- - HardEgor   Цитата(OlegH @ Nov 24 2013, 22:13) В сист...   Nov 24 2013, 15:46


Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 24th July 2025 - 03:57
Рейтинг@Mail.ru


Страница сгенерированна за 0.01371 секунд с 7
ELECTRONIX ©2004-2016