Например TDA7294

Форум РадиоКот • Просмотр темы - stm32f4 cmsis usart +terminal1,9 b
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 16, 2024 14:38:03

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 28 ]  1,  
Автор Сообщение
Не в сети
 Заголовок сообщения: stm32f4 cmsis usart +terminal1,9 b
СообщениеДобавлено: Чт апр 15, 2021 20:33:49 
Мучитель микросхем

Карма: -8
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 440
Рейтинг сообщения: 0
Код:

у меня вопрос .Я пытаюсь вывести на терминал текст .А выводятся какие то 0<0> и козябрики.в халеЛЛ тоже самое.?Кто подскажет умную мыспь?

Добавлено after 36 minutes 14 seconds:
ии

Добавлено after 32 seconds:
Код:


Вложения:
main.c [39.04 KiB]
Скачиваний: 265
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f4 cmsis usart +terminal1,9 b
СообщениеДобавлено: Чт апр 15, 2021 20:44:07 
Собутыльник Кота
Аватар пользователя

Карма: -12
Рейтинг сообщений: -25
Зарегистрирован: Пт июл 12, 2019 22:52:01
Сообщений: 2525
Рейтинг сообщения: 0
Ну и жесть! От этого кода глаза вытекают просто!!! Никакой культуры…
P.S. Если выводятся "козябрики", это означает, что тактирование неправильно настроено.

_________________
Linux rules! Windows must die. Здравомыслящий человек добровольно будет пользоваться мастдаем лишь в двух случаях: под дулом автомата или под влиянием анального зонда.
Я на гитхабе, в ЖЖ


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f4 cmsis usart +terminal1,9 b
СообщениеДобавлено: Чт апр 15, 2021 22:25:11 
Мучитель микросхем

Карма: -8
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 440
Рейтинг сообщения: 0
И в кубе тоже?

Добавлено after 4 minutes 48 seconds:
Тактирование контроллера настроенно.Правильно или неправильно.Но I2C работает.Да я не программист.И культуры написания программы.Не научен.Да и На AVR тоже самое.

Добавлено after 28 minutes 26 seconds:
Может я не так понял.Тактирование контроллера? Или usart ?


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: stm32f4 cmsis usart +terminal1,9 b
СообщениеДобавлено: Сб апр 17, 2021 09:57:59 
Мучитель микросхем

Карма: 4
Рейтинг сообщений: 80
Зарегистрирован: Вс ноя 01, 2015 09:15:16
Сообщений: 445
Откуда: 69.Ржев
Рейтинг сообщения: 0
зациклите выдачу 0х55 в режиме 8n1 и замерьте частоту ( можете кратно снизить скорость передачи, чтоб однозначно оценить даже dso138тым). с учетом что 2 бита '10' это период частоты - это и будет скорость вашего уарта. Сами понимаете, что она должна быть равна выставленной в терминале.


Вернуться наверх
 
Организация питания на основе надежных литиевых аккумуляторов EVE и микросхем азиатского производства

Качественное и безопасное устройство, работающее от аккумулятора, должно учитывать его физические и химические свойства, профили заряда и разряда, их изменение во времени и под влиянием различных условий, таких как температура и ток нагрузки. Мы расскажем о литий-ионных аккумуляторных батареях EVE и нескольких решениях от различных китайских компаний, рекомендуемых для разработок приложений с использованием этих АКБ. Представленные в статье китайские аналоги помогут заменить продукцию западных брендов с оптимизацией цены без потери качества.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: stm32f4 cmsis usart +terminal1,9 b
СообщениеДобавлено: Сб апр 17, 2021 17:03:07 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
В int main(void) после RCC_init(); выполните следующий код
Код:
        RCC_ClocksTypeDef RCC_Clocks;
        RCC_GetClocksFreq (&RCC_Clocks);
покажите результат с отладчика структуры RCC_Clocks {...}


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: stm32f4 cmsis usart +terminal1,9 b
СообщениеДобавлено: Вс апр 18, 2021 19:24:39 
Мучитель микросхем

Карма: -8
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 440
Рейтинг сообщения: 0
Код:
В int main(void) после RCC_init(); выполните следующий код
Код:
        RCC_ClocksTypeDef RCC_Clocks;
        RCC_GetClocksFreq (&RCC_Clocks);
покажите результат с отладчика структуры RCC_Clocks {...}

на жто компелятор ругается

Добавлено after 7 minutes 22 seconds:
и это по моему в кубе.А в кубе тоже самое.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f4 cmsis usart +terminal1,9 b
СообщениеДобавлено: Вс апр 18, 2021 22:05:42 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
ivan dimir писал(а):
на жто компелятор ругается
Как ругается?
Проверьте что бы был подключен файл
Код:
#include <stm32f4xx_rcc.h>
У вас под сомнением
Код:
RCC_PLLCFGR_PLLP
AHB Prescaler
APB2 Prescaler
да и сомнительный разгон, думаю как раз с куба все бы и работало.

Давайте сюда данные регистров RCC->CFGR RCC->PLLCFGR до выполнения функции RCC_init() и после выполнения, и насколько кварц стоит? Сам посчитаю.

Либо делайте то что предложил a797945


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f4 cmsis usart +terminal1,9 b
СообщениеДобавлено: Пн апр 19, 2021 06:48:52 
Мучитель микросхем

Карма: -8
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 440
Рейтинг сообщения: 0
в кубе тоже самое.Козябрики .#include <stm32f4xx_rcc.h> этого файла нет.Он есть в кубе.Но в кубе я генерировал проект .Правда функция передачи на cmsis.AVR тоже козябрики?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f4 cmsis usart +terminal1,9 b
СообщениеДобавлено: Пн апр 19, 2021 09:55:15 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
Попробуй так сделать:
в функции USART1_init() заинкрементировать строки
Код:
USART1->CR1     |= USART_CR1_RXNEIE;
NVIC_EnableIRQ (USART1_IRQn);
далее сверху функции int main(void) добавляем код
Спойлер
Код:
void UsartInit(uint16_t baud)
{
    USART1->BRR = (uint16_t)baud;
    USART1->CR1 |= USART_CR1_TE | USART_CR1_RE | USART_CR1_UE;
    USART1->CR2 = 0;
    USART1->CR3 = 0;
}

void nast_uart(void)
{ uint16_t i;

   for( i=100; i<0xFFF0; i++ )
   {
      UsartInit(i);

      tx_uart1 (0x0a); tx_uart1 (0x0d);
      tx_uart1 ('K');tx_uart1 ('O');tx_uart1 ('D');tx_uart1 ('=');
      tx_uart1 ((i/10000)%10+0x30);
      tx_uart1 ((i/1000)%10+0x30);
      tx_uart1 ((i/100)%10+0x30);
      tx_uart1 ((i/10)%10+0x30);
      tx_uart1 ((i/1)%10+0x30);
      tx_uart1 (0x0a); tx_uart1 (0x0d);
   }
}
в функции int main(void) после USART1_init();
вставляем nast_uart();
Спойлер
Код:
          timer6_init();
          //ds18b20_init();
          USART1_init();
         nast_uart();   ////////////////////
          // adc_init();
           I2C_Init();
подключаемся терминалом на скорости, к примеру 19200, и жмем резет на stm32f4,
функция последовательно будет перебирать регистр USART1->BRR, пока не получите адекватную информацию в терминале.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f4 cmsis usart +terminal1,9 b
СообщениеДобавлено: Вс июл 25, 2021 15:22:14 
Мучитель микросхем

Карма: -8
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 440
Рейтинг сообщения: 0
Я настроил просто на резонатор 8Мгц работает.А включаю PLL и понеслись козябрики .Меня вот что интересует.Там на рисунке есть PLL и что такое R я не нашол


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f4 cmsis usart +terminal1,9 b
СообщениеДобавлено: Вс июл 25, 2021 18:56:42 
Электрический кот

Карма: -4
Рейтинг сообщений: 70
Зарегистрирован: Вт ноя 19, 2019 06:10:18
Сообщений: 1054
Рейтинг сообщения: 0
Цитата:
Там на рисунке есть PLL и что такое R я не нашол

Найди. Без него никак.

Какой хоть у тебя МК?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f4 cmsis usart +terminal1,9 b
СообщениеДобавлено: Вс июл 25, 2021 20:04:11 
Мучитель микросхем

Карма: -8
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 440
Рейтинг сообщения: 0
stm32f407

Добавлено after 6 minutes 52 seconds:
или это бит сброса.Но я его его в регистрах не вижу.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f4 cmsis usart +terminal1,9 b
СообщениеДобавлено: Пн июл 26, 2021 09:00:42 
Электрический кот

Карма: -4
Рейтинг сообщений: 70
Зарегистрирован: Вт ноя 19, 2019 06:10:18
Сообщений: 1054
Рейтинг сообщения: 0
Открой файл "system_stm32f4xx.c" и посмотри, что это за параметр.

Твой код крайне сложно читать, посмотри на примеры из тех же библиотек от СТМ. И не заметил у тебя настройку поля досчёта делителя частоты для УАРТ. Ниже фрагмент класса класса последовательного порта для F411, работающего под FreeRTOS.
Спойлер
Код:
ComPort UART_base::open
(
    ComPort     _port,
    uint32      _baudRate,
    uint8       _dataBits,
    Parity      _parity,
    StopBits    _stopBits
)
{
    switch( _port )
    {
        case COMPORT1:
        {
            usart = USART1;
            break;
        }
        case COMPORT2:
        {
            usart = USART2;
            break;
        }
        case COMPORT6:
        {
            usart = USART6;
            break;
        }
        default:
        {
            usart = 0;
            _port = UNKNOWNPORT;
            break;
        }
    }
   
    port     = _port;
    baudRate = _baudRate;
    dataBits = _dataBits;
    parity   = _parity;
    stopBits = _stopBits;
   
    if
    (
        ( port == UNKNOWNPORT ) ||
        ( usart == 0 )
    )
    {
        return UNKNOWNPORT;
    }

    // ---- _baudRate ----

    if( ( _baudRate == 0 ) || ( _baudRate > 921000UL ) )
    {
        lastError = INVALID_BAUDRATE;
        return port;
    }

    // ---- _dataBits ----

    if( _dataBits != 8 )
    {
        lastError = UNSUPPORTED_DATA_BITS_VALUE;
        return port;
    }
    //  Расчитаем делители частоты УАРТа.
    //  Определим частоту тактирования шины, к которой подключен УАРТ.
   
    switch( port )
    {
        case COMPORT1:      // Этот порт подключен к APB2.
        {
            APB_n = 2;
           
            usart_IRQn = USART1_IRQn;

            // Извлечём делитель частоты,
            APB_divider = ( RCC -> CFGR >> RCC_CFGR_PPRE2_Pos ) & 0x07;
           
            taskENTER_CRITICAL();
            {
                // Включаеи тактирование порта.
                RCC -> APB2ENR |= RCC_APB2ENR_USART1EN;

            }
            taskEXIT_CRITICAL();
           
            break;
        }
        case COMPORT2:      // Этот порт подключен к APB1.
        {
            APB_n = 1;
           
            usart_IRQn = USART2_IRQn;

            // Извлечём делитель частоты,
            APB_divider = ( RCC -> CFGR >> RCC_CFGR_PPRE1_Pos ) & 0x07;
           
            taskENTER_CRITICAL();
            {
                // Включаеи тактирование порта.
                RCC -> APB1ENR |= RCC_APB1ENR_USART2EN;
            }
            taskEXIT_CRITICAL();
           
            break;
        }
        case COMPORT6:  // Этот порт подключен к APB2.
        {
            APB_n = 2;
           
            usart_IRQn = USART6_IRQn;

            // Извлечём делитель частоты,
            APB_divider = ( RCC -> CFGR >> RCC_CFGR_PPRE2_Pos ) & 0x07;

            taskENTER_CRITICAL();
            {
                // Включаеи тактирование порта.
                RCC -> APB2ENR |= RCC_APB2ENR_USART6EN;
            }
            taskEXIT_CRITICAL();
           
            break;
        }
        default:
        {
            lastError = INVALID_PORT;
            return port;
        }
    }

    // Сбросим все конфигурационные биты. По ходу разбора параметров будем
    // выставлять нужные.
    usart -> CR1 = \
    usart -> CR2 = \
    usart -> CR3 = 0;

    // Преобразуем код делителя в число.
    switch( APB_divider )
    {
        case 0x0:   // 000b
        case 0x1:   // 001b
        case 0x2:   // 010b
        case 0x3:   // 011b
        {
            // Без делителя, напрямую.
            APB_divider = 1;
            break;
        }
        case 0x4:   // 100b
        {
            APB_divider = 2;
            break;
        }
        case 0x5:   // 101b
        {
            APB_divider = 4;
            break;
        }
        case 0x6:   // 110b
        {
            APB_divider = 8;
            break;
        }
        case 0x7:   // 111b
        {
            APB_divider = 16;
            break;
        }
    }

    uint32
        floor = SystemCoreClock / ( APB_divider * (uint32)_baudRate * 16UL );

    int32 
        frac =
            (
                ( SystemCoreClock / APB_divider ) -
                ( (uint32)_baudRate * floor * 16UL )
            ) / 200L,

        fracfrac = frac % 100L;

    frac /= 100L;

    if( fracfrac > 50 )
    {
        ++frac;
    }

    usart -> BRR = ( floor << 4 ) | frac;   // Выставили делитель.

    // ---- parity ----

    switch( _parity )
    {
        case NO_PARITY:
        {
            break;
        }
        case ODD:       // Нечётность
        {
            usart -> CR1 |=
            (
                USART_CR1_PCE | // Разрешение контроля чётности-нечётности.
                USART_CR1_M   | // Длина символа 9 бит.
                USART_CR1_PS    // Работаем с признаком нечётности.
            );
            break;
        }
        case PARITY:    // Чётность
        {
            usart -> CR1 |=
            (
                USART_CR1_PCE | // Разрешение контроля чётности-нечётности.
                USART_CR1_M     // Длина символа 9 бит.
            );
            break;
        }
        default:
        {
            return port;
        }
    }

    // ---- stopBits ----
    // 00 — 1 бит, 01 — 0.5 бит, 10 — 2 бит, 11 — 1.5 бит;

    switch( _stopBits )
    {
        case ONE_STOP_BIT:
        {
            break;
        }
        case ONE_AND_HALF_STOP_BIT:
        {
            usart -> CR2 |= USART_CR2_STOP;
            break;
        }
        case TWO_STOP_BITS:
        {
            usart -> CR2 |= USART_CR2_STOP_1;
            break;
        }
        default:
        {
            lastError = UNSUPPORTED_STOP_BITS_VALUE;
            return port;
        }
    }

    purgeTxBuff();
    purgeRxBuff();

    usart -> SR = 0;
    setEvents();   // Разрешаем нужные нам прерывания.

    return( port );
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f4 cmsis usart +terminal1,9 b
СообщениеДобавлено: Пн июл 26, 2021 18:37:57 
Мучитель микросхем

Карма: -8
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 440
Рейтинг сообщения: 0
"Открой файл "system_stm32f4xx.c" и посмотри, что это за параметр." Что за параметр?.Я настраиваю просто на резонатор.И настраиваю скорость usart2 -работает.А настраиваю на PLL шину на скорость 168Мгц.Пшик


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f4 cmsis usart +terminal1,9 b
СообщениеДобавлено: Пн июл 26, 2021 19:03:40 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 2
ivan dimir писал(а):
stm32f407
по ходу дела выбранный вами проц не вытягивает ваш код, то есть слабоват будет.
Может вам попробовать что нибудь из Cortex-R, а еще лучше Cortex-A? К примеру не плохой будет выбор ARM Cortex-A710.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f4 cmsis usart +terminal1,9 b
СообщениеДобавлено: Вт июл 27, 2021 08:16:37 
Электрический кот

Карма: -4
Рейтинг сообщений: 70
Зарегистрирован: Вт ноя 19, 2019 06:10:18
Сообщений: 1054
Рейтинг сообщения: 0
"Открой файл "system_stm32f4xx.c" и посмотри, что это за параметр." Что за параметр?.Я настраиваю просто на резонатор.И настраиваю скорость usart2 -работает.А настраиваю на PLL шину на скорость 168Мгц.Пшик

Судя по используемым терминам, ты не понимаешь, что тебе нужно делать. Разберись с устройством ФАПЧ, тогда станет понятно что тебе нужно настраивать и как рассчитать необходимые параметры.
Dimon456 писал(а):
по ходу дела выбранный вами проц не вытягивает ваш код, то есть слабоват будет.

Я конечно понимаю, что тут грамотных людей меньше, чем хотелось бы, но такое первый раз встречаю. Ты если покурил или бухнул чего, то не следует сразу сюда выплёскивать отрыжку своего повреждённого мозга.

ТС, тебе для понимания: у 405/407 и 411 одинаковые УАРТы. И системы тактирования тоже одинаковые (не помню есть у 405/407 SAI или нет, но тебе это точно пока не понадобится). Намёк понятен? У меня на 411 работает текстовая консоль на 115200 и два Модбас на 115200, мастер и слэйв. Частота 411 у меня 96МГц.
Спойлер
Код:
#define RCC_PLLCFGR_PLLP_div2              (0x0U << RCC_PLLCFGR_PLLP_Pos)      /*!< 0x00000000 */
#define RCC_PLLCFGR_PLLP_div4              (0x1U << RCC_PLLCFGR_PLLP_Pos)      /*!< 0x00010000 */
#define RCC_PLLCFGR_PLLP_div6              (0x2U << RCC_PLLCFGR_PLLP_Pos)      /*!< 0x00020000 */
#define RCC_PLLCFGR_PLLP_div8              (0x3U << RCC_PLLCFGR_PLLP_Pos)      /*!< 0x00030000 */
#define RCC_CFGR_MCO2_SYSCLK               (0x0U << RCC_CFGR_MCO2_Pos)
#define RCC_CFGR_MCO2_PLLI2S               (0x1U << RCC_CFGR_MCO2_Pos)
#define RCC_CFGR_MCO2_HSE                  (0x2U << RCC_CFGR_MCO2_Pos)
#define RCC_CFGR_MCO2_PLL                  (0x3U << RCC_CFGR_MCO2_Pos)
#define RCC_CFGR_MCO2PRE_div1              (0x0U << RCC_CFGR_MCO2PRE_Pos)
#define RCC_CFGR_MCO2PRE_div2              (0x4U << RCC_CFGR_MCO2PRE_Pos)
#define RCC_CFGR_MCO2PRE_div3              (0x5U << RCC_CFGR_MCO2PRE_Pos)
#define RCC_CFGR_MCO2PRE_div4              (0x6U << RCC_CFGR_MCO2PRE_Pos)
#define RCC_CFGR_MCO2PRE_div5              (0x7U << RCC_CFGR_MCO2PRE_Pos)
#define RCC_CFGR_MCO1PRE_div1              (0x0U << RCC_CFGR_MCO1PRE_Pos)
#define RCC_CFGR_MCO1PRE_div2              (0x4U << RCC_CFGR_MCO1PRE_Pos)
#define RCC_CFGR_MCO1PRE_div3              (0x5U << RCC_CFGR_MCO1PRE_Pos)
#define RCC_CFGR_MCO1PRE_div4              (0x6U << RCC_CFGR_MCO1PRE_Pos)
#define RCC_CFGR_MCO1PRE_div5              (0x7U << RCC_CFGR_MCO1PRE_Pos)
#define RCC_CFGR_I2SSRC_PLLI2S             (0x0U << RCC_CFGR_I2SSRC_Pos)
#define RCC_CFGR_I2SSRC_EXT                (0x1U << RCC_CFGR_I2SSRC_Pos)
#define RCC_CFGR_MCO1_HSI                  (0x0U << RCC_CFGR_MCO1_Pos)
#define RCC_CFGR_MCO1_LSE                  (0x1U << RCC_CFGR_MCO1_Pos)
#define RCC_CFGR_MCO1_HSE                  (0x2U << RCC_CFGR_MCO1_Pos)
#define RCC_CFGR_MCO1_PLL                  (0x3U << RCC_CFGR_MCO1_Pos)

...

    __disable_irq();

    // Настройка FLASH
    FLASH -> ACR = \
        FLASH_ACR_PRFTEN    |
        FLASH_ACR_ICEN      |
        FLASH_ACR_DCEN      |
        FLASH_ACR_LATENCY_3WS;

    // Тактирование ----------
    // Включаем HSE = 8 MHz
    RCC -> CR = _VAL2FLD(RCC_CR_HSITRIM,16) | RCC_CR_HSION | RCC_CR_HSEON;

    while( !( RCC -> CR & RCC_CR_HSERDY ) )
    {};

    // Задаём источники тактирования и прескалеры SYSCLK = 96 МГц  USB = 48 МГц
    RCC -> PLLCFGR = \
        RCC_PLLCFGR_PLLSRC_HSE              |
        _VAL2FLD( RCC_PLLCFGR_PLLQ,  4 )     |
        _VAL2FLD( RCC_PLLCFGR_PLLN, 96 )    |
        _VAL2FLD( RCC_PLLCFGR_PLLM,  4 )    |
        RCC_PLLCFGR_PLLP_div2;

    RCC -> CR = \
        _VAL2FLD( RCC_CR_HSITRIM, 16 )  |
        RCC_CR_HSION |
        RCC_CR_HSEON |
        RCC_CR_PLLON;   //Включаем PLL

    while( !( RCC -> CR & RCC_CR_PLLRDY ) )
    {};

    // Переключаемся на PLL с установленнными ранее прескалерами
    RCC -> CFGR = \
        RCC_CFGR_MCO2_HSE       |
        RCC_CFGR_MCO2PRE_div1   |
        RCC_CFGR_MCO1PRE_div1   |
        RCC_CFGR_I2SSRC_PLLI2S  |
        RCC_CFGR_MCO1_HSE       |
        _VAL2FLD( RCC_CFGR_RTCPRE, 8 )  |
        RCC_CFGR_PPRE2_DIV1     |
        RCC_CFGR_PPRE1_DIV2     |
        RCC_CFGR_HPRE_DIV1      |
        RCC_CFGR_SW_PLL;

    SystemCoreClock = 96000000;

    RCC-> CR = \
        _VAL2FLD( RCC_CR_HSITRIM, 16 )  |
        RCC_CR_HSEON                    |
        RCC_CR_PLLON;                       // Выключаем HSI


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f4 cmsis usart +terminal1,9 b
СообщениеДобавлено: Вт июл 27, 2021 17:25:37 
Мучитель микросхем

Карма: -8
Рейтинг сообщений: -23
Зарегистрирован: Вс дек 29, 2019 08:05:21
Сообщений: 440
Рейтинг сообщения: 0
Судя по используемым терминам, ты не понимаешь, что тебе нужно делать. Разберись с устройством ФАПЧ, тогда станет понятно что тебе нужно настраивать и как рассчитать необходимые параметры.
Правильно устройство ФАПЧ,Я настроил по чужим примерам.А в USart нужно точная настройка.По поводу контроллера.Это писал такой же амматор как и я.В кубе я смотрел, похоже вот только чего то не хватает.Я поэтому и к вам обратился.Спецам.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f4 cmsis usart +terminal1,9 b
СообщениеДобавлено: Вт июл 27, 2021 17:43:09 
Мудрый кот

Карма: 20
Рейтинг сообщений: 145
Зарегистрирован: Вс дек 25, 2016 08:34:54
Сообщений: 1849
Рейтинг сообщения: 0
ivan dimir писал(а):
Это писал такой же амматор как и я
у меня то ума хватит на это
a797945 писал(а):
зациклите выдачу 0х55 в режиме 8n1 и замерьте частоту
либо это
Dimon456 писал(а):
функция последовательно будет перебирать регистр USART1->BRR, пока не получите адекватную информацию в терминале.
а так же тупо нажать "паузу" в отладчике и выдернуть для анализа, после выполнения или разгона,
ivan dimir писал(а):
А настраиваю на PLL шину на скорость 168Мгц.
содержимое регистров
Код:
RCC->CR
RCC->PLLCFGR


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f4 cmsis usart +terminal1,9 b
СообщениеДобавлено: Вт июл 27, 2021 17:54:58 
Электрический кот

Карма: -4
Рейтинг сообщений: 70
Зарегистрирован: Вт ноя 19, 2019 06:10:18
Сообщений: 1054
Рейтинг сообщения: 0
Я выложил примеры настройки и тактирования, и УАРТ. Всё с комментариями, и даже на русском. Я не понимаю, что ещё нужно показать. Единственное, возможно, для консольного режима приём-передачу по одному символу. Читай комментарии и держи перед глазами описание SFR.
Спойлер////////////////////////////////////////////////////////////////////////////////

void
ConIO::setEvents( void )
{
// Сначала сбросим биты событий.
//usart -> ISR = 0;

usart -> CR1 =
(
// Запрос прерывания в следующих случаях:

0 << USART_CR1_TCIE_Pos | // - по установке бита TC регистра SR,
// т.е. при окончании передачи;

0 << USART_CR1_TXEIE_Pos | // - по установке бита TXE регистра SR,
// т.е. при начале передачи;
0 << USART_CR1_RXNEIE_Pos | // - что-то пришло в УАРТ.

// Не забываем включить сам модуль и выводы:

1 << USART_CR1_TE_Pos | // - включаем передатчик;
1 << USART_CR1_RE_Pos | // - включаем приёмник;
1 << USART_CR1_UE_Pos // - включение USART.
);

// Разрешаем приём, передачу, устанавливаем обработчики прерываний,
// включаем тактирование.

installInterruptHandler( usart_IRQn );
}

////////////////////////////////////////////////////////////////////////////////

int16
ConIO::putChar( int16 _c )
{
if( usart == 0 )
{
return EOF;
}

while( outBuff -> isFull() )
{
Task::yield();
}

outBuff -> put( _c & 0xFF );

__disable_irq();
{
if( !( usart -> CR1 & USART_CR1_TXEIE ) )
{
usart -> SR &= ~USART_SR_TXE;
usart -> CR1 |= USART_CR1_TXEIE;
}
}
__enable_irq();

return _c;
}
////////////////////////////////////////////////////////////////////////////////

void
ConIO::IRQ_Handler( void )
{
if( !usart )
{
abort();
}

// Разберёмся с причиной попадания сюда.

uint8
ch;

uint32
status = usart -> SR;

if( status & USART_SR_TXE )
{
// Данные отправлены в передатчик, регистр данных опустел.
if( !outBuff -> isEmpty() )
{
outBuff -> get( &ch );
usart -> DR = ch;
}
else
{
usart -> CR1 &= ~USART_CR1_TXEIE;
}
}

if( status & USART_SR_RXNE )
{
// Что-то пришло.
ch = USART2 -> DR;

if( !inBuff -> isFull() )
{
inBuff -> put( ch );
}
}
}

////////////////////////////////////////////////////////////////////////////////
//
// end of ConIO.cpp
//
////////////////////////////////////////////////////////////////////////////////
Код:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: stm32f4 cmsis usart +terminal1,9 b
СообщениеДобавлено: Вт июл 27, 2021 20:16:25 
Открыл глаза

Зарегистрирован: Вс мар 21, 2021 11:06:04
Сообщений: 41
Рейтинг сообщения: 0
tonyk писал(а):
Читай комментарии и держи перед глазами описание SFR.

Что по-вашему должен сделать код вида:
Reg |= (0<<Pos1)|(0<<Pos2);
Для чего вы это пишите? Проговорите словами, что вы хотите сделать такой строкой.

Извиняюсь, ошибся. У вас так:
Reg = (0<<Pos1)|(0<<Pos2);
Надо лишь помнить, что такой записью вы портите содержимое всех прочих битовых полей регистра Reg, что тоже нежелательно.


Последний раз редактировалось Professor Chaos Вт июл 27, 2021 22:59:34, всего редактировалось 1 раз.

Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 28 ]  1,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: Google [Bot], nicruzhov и гости: 12


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y