Например TDA7294

Форум РадиоКот • Просмотр темы - STM32F0 и USART
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вт апр 16, 2024 17:55:51

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


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



Начать новую тему Ответить на тему  [ Сообщений: 84 ]    , , , 4,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Вт дек 10, 2013 15:00:55 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
Код:
USART->CR1 =USART_CR1_TE|USART_CR1_RE |USART_CR1_RXNEIE;
USART1->CR2 &= ~USART_CR2_STOP;
NVIC_SetPriority(USART1_IRQn, 15);
NVIC_EnableIRQ(USART1_IRQn);
USART->CR1 =USART_CR1_UE ;


Цитата:
Bits 13:12STOP[1:0]: STOP bits
These bits are used for programming the stop bits.
00: 1 stop bit
01: Reserved.
10: 2 stop bits
11: 1.5 stop bit
This bit field can only be written when the USART is disabled (UE=0)


Как и многие другие биты ...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пт фев 05, 2016 19:27:46 
Родился

Зарегистрирован: Пт янв 08, 2016 19:00:40
Сообщений: 19
Рейтинг сообщения: 0
Kvasshtain писал(а):
Здравствуйте уважаемый Dosikus. Рад Вас видеть :)) . У меня STM32F051. Не ясно что записывать в AFR[1], и как это делать для других случаев. Т.е. я не понимаю откуда взялось число 0x0110, ну или по другому (1<<(2*4))|(1<<(1*4))?


добрый день,

действительно, почему тут устанавливаем биты именно так 0x0110?

Для чего тогда секция в файле stm32f051.s:

/****************** Bit definition for GPIO_AFRL register ********************/
#define GPIO_AFRL_AFR0 ((uint32_t)0x0000000F)
#define GPIO_AFRL_AFR1 ((uint32_t)0x000000F0)
#define GPIO_AFRL_AFR2 ((uint32_t)0x00000F00)
#define GPIO_AFRL_AFR3 ((uint32_t)0x0000F000)
#define GPIO_AFRL_AFR4 ((uint32_t)0x000F0000)
#define GPIO_AFRL_AFR5 ((uint32_t)0x00F00000)
#define GPIO_AFRL_AFR6 ((uint32_t)0x0F000000)
#define GPIO_AFRL_AFR7 ((uint32_t)0xF0000000)

/****************** Bit definition for GPIO_AFRH register ********************/
#define GPIO_AFRH_AFR8 ((uint32_t)0x0000000F)
#define GPIO_AFRH_AFR9 ((uint32_t)0x000000F0)
#define GPIO_AFRH_AFR10 ((uint32_t)0x00000F00)
#define GPIO_AFRH_AFR11 ((uint32_t)0x0000F000)
#define GPIO_AFRH_AFR12 ((uint32_t)0x000F0000)
#define GPIO_AFRH_AFR13 ((uint32_t)0x00F00000)
#define GPIO_AFRH_AFR14 ((uint32_t)0x0F000000)
#define GPIO_AFRH_AFR15 ((uint32_t)0xF0000000)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Вт фев 09, 2016 20:09:05 
Родился

Зарегистрирован: Пт янв 08, 2016 19:00:40
Сообщений: 19
Рейтинг сообщения: 0
помогите начинающему понять :beer:

для удобства, сам себе смог предложить только это:

GPIOA->AFR[1] |= GPIO_AFRH_AFR9_AF1 | GPIO_AFRH_AFR10_AF1;

предварительно добавил это:

#define GPIO_AFRH_AFR9_AF1 ((uint32_t)0x00000010)
#define GPIO_AFRH_AFR10_AF1 ((uint32_t)0x00000100)

либо уж тогда писать так:
*(uint32_t*)0x48000024 |= 0x0110;



а что означает синтаксис (1<<(2*4))|(1<<(1*4)) ?


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Вт фев 09, 2016 20:39:01 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 3
К примеру - GPIOA->AFR[0]|=2<<(4*2);
Первая 2 это альтернативная функция, находиться по таблице в даташите, 4 -именно столько занимает каждый пин в регистре AFR , а вторая 2 порядковый номер пина. В итоге мы имеем число определяющее альтернативную функцию и число в скобках на сколько бит сдвинуть. И довольно таки читаемо
Мы видим число определяющее альтернативную функцию и порядковый номер пина. Можно дефайнами конечно заменить.


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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Вт фев 09, 2016 20:47:38 
Друг Кота

Карма: -18
Рейтинг сообщений: 29
Зарегистрирован: Вс дек 05, 2010 06:10:34
Сообщений: 4583
Откуда: ЮВ
Рейтинг сообщения: 0
godz320 писал(а):
для удобства

Для удобства... выдрать из СПЛ... да и все дела...
Код:
void GPIO_PinAFConfig(GPIO_TypeDef* GPIOx, uint16_t GPIO_PinSource, uint8_t GPIO_AF)
{
  uint32_t temp = 0x00;
  uint32_t temp_2 = 0x00;
   
  temp = ((uint32_t)(GPIO_AF) << ((uint32_t)((uint32_t)GPIO_PinSource & (uint32_t)0x07) * 4)) ;
  GPIOx->AFR[GPIO_PinSource >> 0x03] &= ~((uint32_t)0xF << ((uint32_t)((uint32_t)GPIO_PinSource & (uint32_t)0x07) * 4)) ;
  temp_2 = GPIOx->AFR[GPIO_PinSource >> 0x03] | temp;
  GPIOx->AFR[GPIO_PinSource >> 0x03] = temp_2;
   
//   GPIO_PinAFConfig(GPIOA, 13, 5);   
}

_________________
"Я не даю готовых решений, я заставляю думать!"(С)


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

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Вт фев 09, 2016 20:54:38 
Родился

Зарегистрирован: Пт янв 08, 2016 19:00:40
Сообщений: 19
Рейтинг сообщения: 0
спасибо!! Пока нечего не понял,

но можно объяснить на данном примере?

GPIOA->AFR[1] | = 0x0110;

если я правильно понял, то это тождественно:

GPIOA->AFR[1] | = (1<<(2*4))|(1<<(1*4))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Вт фев 09, 2016 21:02:27 
Родился

Зарегистрирован: Пт янв 08, 2016 19:00:40
Сообщений: 19
Рейтинг сообщения: 0
HHIMERA писал(а):
выдрать из СПЛ... да и все дела...


да хотелось бы конечно в процессе изучения использовать только даташит и набитые дефайны от производителя.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Вт фев 09, 2016 21:04:47 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
AFR 32 битные , а ты предоставил 16 битное значение. Посмотри в RM описание AFR и приведи свое число к 32 битам и все станет на свои места


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Вт фев 09, 2016 21:23:34 
Родился

Зарегистрирован: Пт янв 08, 2016 19:00:40
Сообщений: 19
Рейтинг сообщения: 0
Цитата:
AFR 32 битные

это я запомнил (stm32), навряд ли есть регистры 8 или 16 битные.


Цитата:
а ты предоставил 16 битное значение.

это не я предоставил, а вы. Цитата из первой страницы этой темы:
Спойлерwss60 писал(а):
Теперь другая проблема: компилятор “ругается” на регистр AFRH!?
Код:
void Init_usart(void)
{


GPIOA->AFRH |= 0x0110; // <----- !!!



Можно же ради приличия слазать в stm32f0xx.h :)))

Код:
GPIOA->AFR[1]= (1<<(2*4))|(1<<(1*4));



Цитата:
Посмотри в RM описание AFR и приведи свое число к 32 битам и все станет на свои места


На самом деле мне безраличен сейчас AFR, RM, 32 бита. Мне интересна конструкция ввида (1<<(2*4))|(1<<(1*4))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Вт фев 09, 2016 21:37:49 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
Ну так не я же пихал 16 битное.

Читайте запись так сдвинуть 1 на 4 бита и сдвинуть 1 на 8 бит. Теперь откройте все же описание AFR в RM и посмотрите что находиться на этих позициях.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Ср фев 10, 2016 11:46:51 
Грызет канифоль

Карма: 4
Рейтинг сообщений: 33
Зарегистрирован: Чт ноя 29, 2012 08:27:22
Сообщений: 295
Рейтинг сообщения: 0
Цитата:
выдрать из СПЛ... да и все дела...
зачем выдирать из спл ?
через месяц ломать голову - что там автор хотел сказать?
спл для F0 вполне рабочая.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Ср фев 10, 2016 12:03:55 
Друг Кота

Карма: -18
Рейтинг сообщений: 29
Зарегистрирован: Вс дек 05, 2010 06:10:34
Сообщений: 4583
Откуда: ЮВ
Рейтинг сообщения: 0
А зачем она вообще нужна... СПЛ??? Да ещё и для Ф0...
И что там ломать голову... если всё есть в хедере... почти...
И можно подумать... что СПЛ улучшает понимание чего-то там... наоборот... отдаляет...

_________________
"Я не даю готовых решений, я заставляю думать!"(С)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Вс апр 22, 2018 14:35:13 
Мучитель микросхем

Карма: 2
Рейтинг сообщений: 10
Зарегистрирован: Ср окт 19, 2011 08:48:27
Сообщений: 443
Откуда: Мать городов русских
Рейтинг сообщения: 0
Народ, начал юзать STM32F0 DISCO на STM32F051, запустил USART1 по примеру из этого топика, добавил прерывания - прерывания по USART_ISR_RXNE и USART_ISR_TC идут, нет прерываний по приёму. Кому не в лом, плз гляньте инициализацию и прерывание:

Код:
// ======= Init SPI2 =======
void Init_USART1 (void)
{
  // PA9 -> USART1_TX, PA10 - USART1_RX
   
   RCC->APB2ENR |= RCC_APB2ENR_USART1EN; // Enable Clock USART1
  RCC->APB2ENR |= RCC_AHBENR_GPIOAEN;   // Enable Clock GPIOA

  GPIOA->MODER |= GPIO_MODER_MODER9_1;   // PA9  (TX) - Alternate function mode
  GPIOA->MODER |= GPIO_MODER_MODER10_1;  // PA10 (RX) - Alternate function mode
 
   GPIOA->AFR[1]  |= 0x0110;  // Alternate function at AF1
   
   GPIOA->OTYPER = 0; // Output push-pull
   
   GPIOA->PUPDR = 0; // No pull-up, no pull-down
   
  GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR9;  // PA9  (TX) - High speed
  GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR10; // PA10 (RX) - High speed
   
  RCC->CFGR3  &= ~RCC_CFGR3_USART1SW; // Set System Clock (SYSCLK) USART1
  RCC->CFGR3  |=  RCC_CFGR3_USART1SW_0;

//  USART1->BRR = 0x681; //Скорость обмена 9600
  USART1->BRR = 0x3FFF;
//  USART1->BRR = 0xFFFF;

  USART1->CR1 &= ~USART_CR1_M; //Данные - 8 бит
  USART1->CR2 &= ~USART_CR2_STOP; //1 стоп-бит

  USART1->CR1 |= USART_CR1_RE;     // Enable Receiver
  USART1->CR1 |= USART_CR1_TE;     // Enable Transmitter

  USART1->CR1 |= USART_CR1_RXNEIE; // RX Complete Interrupt Enable
  USART1->CR1 |= USART_CR1_TCIE; // Transmission Complete Interrupt Enable
//  USART1->CR1 |= USART_CR1_TXEIE; // Transmitter Empty Interrupt Enable
   
  USART1->CR1 |= USART_CR1_UE;  // Enable USART1

  NVIC_EnableIRQ (USART1_IRQn); // Enable Interrupt USART1
   
   USART1->TDR = 0x55; // Begin Transmitte
}   


Код:
// ===== USART1 TX Empty Interrupt =======
void USART1_IRQHandler (void)
{
  if (USART1->ISR & USART_ISR_RXNE) // Read data register not empty
   {
     char USART1_Data = USART1->RDR;

    if (CntRXUSART1++ & 0xF0) { LEDBLUE_DIS; }
     else                      { LEDBLUE_EN;  }
   }
   
  if (USART1->ISR & USART_ISR_TC) // Transmission complete
   {
      USART1->TDR = 0x55;

    if (CntTXUSART1++ & 0xF0) { LEDGREEN_DIS; }
     else                      { LEDGREEN_EN;  }
   }
}


По счётчикам CntRXUSART1 и CntTXUSART1 мигаю светодиодами на плате.

_________________
Хорошему коту и в декабре - март :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Вс апр 22, 2018 15:09:26 
Поставщик валерьянки для Кота

Карма: 20
Рейтинг сообщений: 253
Зарегистрирован: Вс июн 19, 2016 09:32:03
Сообщений: 2090
Рейтинг сообщения: 0
А зачем ты RX настроил как выход?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Вс апр 22, 2018 16:11:09 
Мучитель микросхем

Карма: 2
Рейтинг сообщений: 10
Зарегистрирован: Ср окт 19, 2011 08:48:27
Сообщений: 443
Откуда: Мать городов русских
Рейтинг сообщения: 0
А зачем ты RX настроил как выход?

pls напиши что я сделал неправильно и как нужно правильно, STM32 только начал учить.

подключил на PA9 св.диод - глухо, выхода нет, тоже чёго-то неправильно настроил

_________________
Хорошему коту и в декабре - март :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Вс апр 22, 2018 21:59:21 
Мучитель микросхем
Аватар пользователя

Карма: 6
Рейтинг сообщений: 87
Зарегистрирован: Вс янв 09, 2011 23:05:37
Сообщений: 450
Откуда: СССР
Рейтинг сообщения: 0
Код:
RCC->APB2ENR |= RCC_AHBENR_GPIOAEN;


Ничего не настораживает ? :roll:

СпойлерRCC->AHBENR |= RCC_AHBENR_GPIOAEN;

_________________
Иван Сусанин - первый полупроводник :solder:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пн апр 23, 2018 08:31:06 
Мучитель микросхем

Карма: 2
Рейтинг сообщений: 10
Зарегистрирован: Ср окт 19, 2011 08:48:27
Сообщений: 443
Откуда: Мать городов русских
Рейтинг сообщения: 0
Код:
RCC->APB2ENR |= RCC_AHBENR_GPIOAEN;

Ничего не настораживает?

Благодарю, сам в упор не видел, исправлю, на выходе TX ничего нет, теперь понятно, что тактирования не было на порт.

Исправил, прошил, выход TX заработал, уже утром буду дальше ковырять.

Добавлено after 8 hours 54 minutes 12 seconds:
Ещё раз благодарю, приём есть, прерывания срабатывают, счётчики прерываний считают, светодиды мигают.

_________________
Хорошему коту и в декабре - март :)


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Ср дек 19, 2018 11:33:27 
Родился

Зарегистрирован: Ср дек 19, 2018 11:01:34
Сообщений: 2
Рейтинг сообщения: 0
Настроил USART1, по примерам, но после запуска контроллер "виснет" на Default handelr. Посмотрел память, действительно, в таблице векторов на обработчик USART1 стоит адрес дефолтного обработчика.
Т.е. по-видимому weak функция обработчика не переопределяется.
Подскажите, плиз, в чем может быть проблема?

Код:
int main(void)
  {
   // System Initialization
    SystemCoreClockUpdate();

   /* Initialize RTOS */
   osKernelInitialize();                 // Initialize CMSIS-RTOS

   // PORTA, PORTC AHB peripheral clock enable register (RCC_AHBENR) for GPIOs, DMA
   RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
   RCC->AHBENR |= RCC_AHBENR_GPIOBEN;
   RCC->AHBENR |= RCC_AHBENR_GPIOCEN;

   // Initialize USART1 Interface

   RCC->APB2ENR |= RCC_APB2ENR_USART1EN;
   RCC->CFGR3     &= ~RCC_CFGR3_USART1SW;
   RCC->CFGR3     |=  RCC_CFGR3_USART1SW;   //HSI selected as USART1 clock

   // TX
   GPIOA->MODER |= _VAL2FLD(GPIO_MODER_MODER9, 0x2);
   GPIOA->OTYPER &= ~GPIO_OTYPER_OT_9;   // Reset bit
   GPIOA->PUPDR |= _VAL2FLD(GPIO_PUPDR_PUPDR9, GPIO_PuPd_DOWN);
   GPIOA->OSPEEDR |= _VAL2FLD(GPIO_OSPEEDR_OSPEEDR9,    GPIO_Speed_Level_3);
   GPIOA->AFR[1] |= _VAL2FLD(GPIO_AFRH_AFSEL9, 0x1);

   // RX
   GPIOA->MODER |= _VAL2FLD(GPIO_MODER_MODER10, 0x0);
   GPIOA->PUPDR |= _VAL2FLD(GPIO_PUPDR_PUPDR10, GPIO_PuPd_NOPULL);
   GPIOA->OSPEEDR |= _VAL2FLD(GPIO_OSPEEDR_OSPEEDR10,    GPIO_Speed_Level_3);
   GPIOA->AFR[1] |= _VAL2FLD(GPIO_AFRH_AFSEL10, 0x1);

   USART1->BRR = 0x46;
   USART1->CR1 |= USART_CR1_UE;
   USART1->CR1 &= ~USART_CR1_M;               //Данные - 8 бит
   USART1->CR2 &= ~USART_CR2_STOP;            //1 стоп-бит
   USART1->CR1 |= USART_CR1_TE;
   USART1->CR1 |= USART_CR1_RE;

   USART1->CR1 |= USART_CR1_RXNEIE;
   NVIC_EnableIRQ(USART1_IRQn);


   /*    Initialize output PC8 (blue LED) */

   

   osThreadNew(app_main, NULL, NULL);       // Create application main thread
   osThreadNew(gsm_power, NULL, NULL);       // Create GSM Power thread
   osThreadNew(onoff_key, NULL, NULL);       // Create onoff key monitoring thread
   osThreadNew(usart1_thread, NULL, NULL);       // Create onoff key monitoring thread
   osKernelStart();                      // Start thread execution
   for (;;) {}

//   for(;;){
//      // Read input state of button PA0
//      if(GPIOA->IDR & GPIO_IDR_0){
//         //GPIOB->BSRR |= GPIO_BSRR_BR_8;
//      }else{
//         //GPIOB->BSRR |= GPIO_BSRR_BS_8;
//      }
//   }
}

/***********************************/
/*** прерывание по приему данных ***/
/***********************************/
volatile unsigned int usart_temp;
void USART1_IRQHandler(void)
{
  if((USART1->ISR & USART_ISR_RXNE)!=0)
  {
    usart_temp = USART1->RDR;
  }
}


Добавлено after 10 minutes 26 seconds:
Разобрался))
Посмотрел на выход компилятора, по map файлу дефолтный обработчик проходил по имени как "USART1_IRQHandler", а моя функция как "USART1_IRQHandler()"
У меня проект на C++, поставил перед описанием extern "C", всё завелось.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Ср дек 19, 2018 11:36:56 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 403
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2479
Рейтинг сообщения: 0
Если где-то засветился С++ компилятор, то надо так
Код:
extern "C" void USART1_IRQHandler()
{
  //...
}


Ну, ок, сам разобрался.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Вс янв 13, 2019 16:20:40 
Вымогатель припоя

Зарегистрирован: Вт ноя 02, 2010 17:46:37
Сообщений: 574
Рейтинг сообщения: 0
Начал ковырять, stm32f030, не могу понять почему после того как остановил прием отладчиком, следующий байт не выставляет флаг RXNE
Принимаю байт так:
Код:
uint8_t ReadByte(USART_TypeDef* USARTx){
   while(!(USARTx->ISR & USART_ISR_RXNE)){};   
        return USARTx->RDR;
}

Инициализация минимальная
Спойлерvoid InitDriverUsart(USART_TypeDef* USARTx,uint32_t boudrate,Remap_t remap){
uint16_t temp;
if(USARTx==USART1){
RCC->APB2ENR |=RCC_APB2ENR_USART1EN;
temp=(CPU_APB2+boudrate/2)/boudrate; //так как на разных шинах сидят /2 зависит от шины и настроек
//----------
if(remap){
}else{
RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
gpio_conf(GPIOA, 10, MODE_AF, TYPE_PUSHPULL, SPEED_2MHz, PULLUP_UP, 1); //RX
gpio_conf(GPIOA, 9, MODE_AF, TYPE_PUSHPULL, SPEED_2MHz, PULLUP_UP, 1); //TX
}
//----------
}
//----------
//----------
USARTx->CR1 &= USART_CR1_UE;
USARTx->CR1 = 0x00000000; /* (2) */
USARTx->CR2 = 0x00000000; /* (3) */
USARTx->BRR =temp; /* (4) */
USARTx->CR1 |= ( USART_CR1_TE | USART_CR1_RE ); /* (6) */
USARTx->CR1 |= USART_CR1_UE; /* (5) */
//----------
}


Main:
Код:
int main(){
InitDriverUsart(USART1,7600,NOT_REMAP);
while(1){
ReadByte(USART1);
ReadByte(USART1);
ReadByte(USART1);
ReadByte(USART1);
ReadByte(USART1);
ReadByte(USART1);
NOP;
}
}



Если поставить брекпоинт на NOP то после мк зависает на ожидании флага, хотя данные сами идут смотрю анализатором, ну и в одном из байте передается номер посылки, и он меняеться пока не остановил брек поинтом


Последний раз редактировалось pokk Вс янв 13, 2019 16:38:04, всего редактировалось 1 раз.

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

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


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

Сейчас этот форум просматривают: Юрий48 и гости: 18


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

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


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