Например TDA7294

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





Текущее время: Сб апр 20, 2024 19:04:07

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


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



Начать новую тему Ответить на тему  [ Сообщений: 84 ]    , 2, , ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пн дек 02, 2013 15:27:58 
Нашел транзистор. Понюхал.
Аватар пользователя

Карма: 1
Рейтинг сообщений: -2
Зарегистрирован: Ср фев 09, 2011 13:29:01
Сообщений: 170
Откуда: г.Саратов
Рейтинг сообщения: 0
STM32F0 Discovery + своя плата с FT232BL подключенная к Discovery.


Вложения:
STM32 USART.rar [304.19 KiB]
Скачиваний: 519

_________________
Говорят, что у него нет носа и рта, и что он общается телепатией. Говорят, что у него зеленая кожа, и он питается как растение, закопав ноги в землю и подставив спину солнцу. Все что знаем мы: его зовут Вовэн.
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пн дек 02, 2013 15:41:41 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 1
Код:
 // Включить тактирование порта А
  RCC->AHBENR |= RCC_AHBENR_GPIOBEN;

Предоставляю возможность найти самому (очепятку?) или невнимательность . :)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пн дек 02, 2013 16:12:18 
Нашел транзистор. Понюхал.
Аватар пользователя

Карма: 1
Рейтинг сообщений: -2
Зарегистрирован: Ср фев 09, 2011 13:29:01
Сообщений: 170
Откуда: г.Саратов
Рейтинг сообщения: 0
Было
RCC->AHBENR |= RCC_AHBENR_GPIOBEN;
, а надо
RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
Балбес — я, балбес. :? А я мучаюсь. :))) Ладно дома попробую исправить. Завтра отпишусь.
Dosikus, спасибо Вам за помощь. :beer:

_________________
Говорят, что у него нет носа и рта, и что он общается телепатией. Говорят, что у него зеленая кожа, и он питается как растение, закопав ноги в землю и подставив спину солнцу. Все что знаем мы: его зовут Вовэн.


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

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

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Вт дек 03, 2013 10:03:15 
Нашел транзистор. Понюхал.
Аватар пользователя

Карма: 1
Рейтинг сообщений: -2
Зарегистрирован: Ср фев 09, 2011 13:29:01
Сообщений: 170
Откуда: г.Саратов
Рейтинг сообщения: 0
УРА!!! :)) Все заработало. Спасибо Вам Dosikus за помощь. Желаю Вам на STM-ке Терминатора собрать для работы на огороде, ну или хотя бы Бигдога. :beer: :music:

_________________
Говорят, что у него нет носа и рта, и что он общается телепатией. Говорят, что у него зеленая кожа, и он питается как растение, закопав ноги в землю и подставив спину солнцу. Все что знаем мы: его зовут Вовэн.


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пт дек 06, 2013 09:29:26 
Нашел транзистор. Понюхал.
Аватар пользователя

Карма: 1
Рейтинг сообщений: -2
Зарегистрирован: Ср фев 09, 2011 13:29:01
Сообщений: 170
Откуда: г.Саратов
Рейтинг сообщения: 0
Вот и пришло время осваивать прием. Решил через прерывание. Но вот блин, ... опять не хочет орбайтн. Прерывание срабатывает и виснит намертво. Что я опять делаю не так не пойму :dont_know: . Вот код:

Код:
#include "stm32f0xx.h"

#define APBCLK   8000000UL
#define BAUDRATE 9600UL

int flag = 0;

void Init_usart(void)
{
  // Включить тактирование порта А
  RCC->AHBENR |= RCC_AHBENR_GPIOAEN;
  // Включаем тактирование USART1
  RCC->APB2ENR |= RCC_APB2ENR_USART1EN;  //Включаем тактирование USART1
 
  GPIOA->MODER   |= GPIO_MODER_MODER10_1;         // PA10 (RX) - Alternate function mode
  GPIOA->OSPEEDR |= GPIO_OSPEEDER_OSPEEDR10;      // PA10 (RX) - High speed
  GPIOA->AFR[1]    |= 0x0110;  //
 
  RCC->CFGR3     &= ~RCC_CFGR3_USART1SW;
  RCC->CFGR3     |=  RCC_CFGR3_USART1SW_0;  //System clock (SYSCLK) selected as USART1 clock
 
 
  USART1->CR1 |= USART_CR1_UE; //Включаем USART1
  USART1->CR1 &= ~USART_CR1_M; //Данные - 8 бит
  USART1->CR2 &= ~USART_CR2_STOP; //1 стоп-бит
  USART1->BRR =(APBCLK+BAUDRATE/2)/BAUDRATE; //скорость usart
  USART1->CR1 |= USART_CR1_TE; //Включаем передатчик USART1
  USART1->CR1 |= USART_CR1_RE; //Включаем приемник USART1
  USART1->CR1 |= USART_CR1_RXNEIE; //Разрешаем прерывание по приему USART1 в самом модуле USART1
  //NVIC_SetPriority(USART1_IRQn, 15); // Как я понял, это функция, которая позволяет изменить приоритет прерывания
  //(вот только, что происходит с тем прерыванием, которое имело этот приоритет по умолчанию я не знаю)
  NVIC_EnableIRQ(USART1_IRQn); // А эта функция, как я понял, разрешает прерывание от USART1
}

...

void USART1_DAC_IRQHandler(void) // Обработчик прерывания по приему символа USART
{
  USART1->ISR &= ~USART_ISR_RXNE; // Сбрасываем флаг (RDR не пуст, принят символ)
  flag = 1;
}

// Главный цикл
int main(void)
{
 
  Init_GPIO();
  Init_usart();
  while(1)
    {
      // Моргание ножкой pc9!
      led_On9();
      delay(1000000UL);
      led_Off9();
      if (flag)
      {
        led_On8();
        delay(1000000UL);
        led_Off8();
        flag = 0;
      }
      delay(1000000UL);
    }
}


Здесь просто проверяется светодиодиком наличие приема. То есть я не беру из RDR данных. Может дело в этом (читал в даташыте, что есть там такае фишка как ошибка перезаписи)?
Еще попутный вопрос: Что делают функции NVIC_SetPriority и NVIC_EnableIRQ. Как я понял, первая меняет приоритет прерывания (круто, такого в AVR-ках не было), но тогда, что случается с прерыванием, которое имело приоритет, который мы хотим задать для нашего прерывания. А вторая разрешает прерывание от аппаратного модуля USART (при этом USART1->CR1 |= USART_CR1_RXNEIE - Разрешаем прерывание по приему USART1 в самом модуле USART1). Хочу сказать, что вход в прерывание происходит точно, это видно и по отладчику (которым я пока плохо умею пользоваться) и, когда я размещаю функцию зажигания диода в теле обработчика прерывания, по загорающемуся синему светику.
Ну и на последок, чем отличаются обработчики USART1_DAC_IRQHandler и USART1_IRQHandler, пробовал и тот и другой :roll: .


Вложения:
STM32 USART прием.rar [308.89 KiB]
Скачиваний: 355

_________________
Говорят, что у него нет носа и рта, и что он общается телепатией. Говорят, что у него зеленая кожа, и он питается как растение, закопав ноги в землю и подставив спину солнцу. Все что знаем мы: его зовут Вовэн.
Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

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

Подробнее>>
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пт дек 06, 2013 10:13:13 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 1
Kvasshtain писал(а):
То есть я не беру из RDR данных. Может дело в этом (читал в даташыте, что есть там такае фишка как ошибка перезаписи)?


Флаг RXNE сбрасывается вычиткой RDR или записью 1 в RXFRQ, софтовый сброс его невозможен .

Kvasshtain писал(а):
Еще попутный вопрос: Что делают функции NVIC_SetPriority и NVIC_EnableIRQ. Как я понял, первая меняет приоритет прерывания (круто, такого в AVR-ках не было), но тогда, что случается с прерыванием, которое имело приоритет, который мы хотим задать для нашего прерывания. А вторая разрешает прерывание от аппаратного модуля USART (при этом USART1->CR1 |= USART_CR1_RXNEIE - Разрешаем прерывание по приему USART1 в самом модуле USART1). Хочу сказать, что вход в прерывание происходит точно, это видно и по отладчику (которым я пока плохо умею пользоваться) и, когда я размещаю функцию зажигания диода в теле обработчика прерывания, по загорающемуся синему светику.

Читать о NVIC а это уже ядро .


Kvasshtain писал(а):
Ну и на последок, чем отличаются обработчики USART1_DAC_IRQHandler и USART1_IRQHandler, пробовал и тот и другой :roll: .



В STM32F051 нет USART1_DAC_IRQHandler , где ты его выцепил ?
Да и обработчики как таковые ты пишешь сам. Изначально их нет, есть только вектора .



Код:
delay(1000000UL);
- кошмар

SYStick не проще юзать ?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пт дек 06, 2013 10:31:19 
Нашел транзистор. Понюхал.
Аватар пользователя

Карма: 1
Рейтинг сообщений: -2
Зарегистрирован: Ср фев 09, 2011 13:29:01
Сообщений: 170
Откуда: г.Саратов
Рейтинг сообщения: 0
Здравствуйте уважаемый Dosikus. Благодарю за ответ :)) . По поводу USART1_DAC_IRQHandler. Будете смеяться, но когда стал перебирать варианты, почему не работает заглянул вот сюда http://kazus.ru/forums/showthread.php?t=106689&page=2, и Вы там советуете сменить void TIM6_IRQHandler(void) на void TIM6_DAC_IRQHandler (void) :))) . Я сделал по образу и подобию для USART-а. Причем работает и так и так, но и виснет и так и так. Вот только чем отличается с DAC и без него, я не понял (вообще DAC – это что такое, вроде на АЦП не похоже).

А задержку я на скорую руку сделал, мне-ж просто разобраться пока надо, хрен с ним, что это пока быдлокод и полное отсутствие оптимизации.

_________________
Говорят, что у него нет носа и рта, и что он общается телепатией. Говорят, что у него зеленая кожа, и он питается как растение, закопав ноги в землю и подставив спину солнцу. Все что знаем мы: его зовут Вовэн.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пт дек 06, 2013 10:51:51 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
Потому что такой вектор существует, см startup_stm32f0xx.s :
Спойлер
Код:
Default_Handler PROC

                EXPORT  WWDG_IRQHandler                [WEAK]
                EXPORT  PVD_IRQHandler                 [WEAK]
                EXPORT  RTC_IRQHandler                 [WEAK]
                EXPORT  FLASH_IRQHandler               [WEAK]
                EXPORT  RCC_IRQHandler                 [WEAK]
                EXPORT  EXTI0_1_IRQHandler             [WEAK]
                EXPORT  EXTI2_3_IRQHandler             [WEAK]
                EXPORT  EXTI4_15_IRQHandler            [WEAK]
                EXPORT  TS_IRQHandler                  [WEAK]
                EXPORT  DMA1_Channel1_IRQHandler       [WEAK]
                EXPORT  DMA1_Channel2_3_IRQHandler     [WEAK]
                EXPORT  DMA1_Channel4_5_IRQHandler     [WEAK]
                EXPORT  ADC1_COMP_IRQHandler           [WEAK]
                EXPORT  TIM1_BRK_UP_TRG_COM_IRQHandler [WEAK]
                EXPORT  TIM1_CC_IRQHandler             [WEAK]
                EXPORT  TIM2_IRQHandler                [WEAK]
                EXPORT  TIM3_IRQHandler                [WEAK]
                EXPORT  TIM6_DAC_IRQHandler            [WEAK]
                EXPORT  TIM14_IRQHandler               [WEAK]
                EXPORT  TIM15_IRQHandler               [WEAK]
                EXPORT  TIM16_IRQHandler               [WEAK]
                EXPORT  TIM17_IRQHandler               [WEAK]
                EXPORT  I2C1_IRQHandler                [WEAK]
                EXPORT  I2C2_IRQHandler                [WEAK]
                EXPORT  SPI1_IRQHandler                [WEAK]
                EXPORT  SPI2_IRQHandler                [WEAK]
                EXPORT  USART1_IRQHandler              [WEAK]
                EXPORT  USART2_IRQHandler              [WEAK]
                EXPORT  CEC_IRQHandler                 [WEAK]



А обозвать обработчик ты можешь как угодно, вот только если он не будет совпадать с именем вектора то и не попадешь ты в него никогда..
В добавок будешь улетать в Handler fault при обработке прерывания.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пт дек 06, 2013 13:25:06 
Нашел транзистор. Понюхал.
Аватар пользователя

Карма: 1
Рейтинг сообщений: -2
Зарегистрирован: Ср фев 09, 2011 13:29:01
Сообщений: 170
Откуда: г.Саратов
Рейтинг сообщения: 0
Н-да... по поводу того, что с USART1_DAC_IRQHandler работает, это я погорячился. Прерывание у меня срабатывало и уходило на обработчик по умолчанию, который, как я знаю, представляет из себя пустой бесконечный цикл, который все на фиг вешает, если я конечно не наврал. :roll: А вот в USART1_IRQHandler светодиодик загорался если зажигать его из самого прерывания.

_________________
Говорят, что у него нет носа и рта, и что он общается телепатией. Говорят, что у него зеленая кожа, и он питается как растение, закопав ноги в землю и подставив спину солнцу. Все что знаем мы: его зовут Вовэн.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пт дек 06, 2013 13:41:47 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
Ну так что сейчас не работает ?
Вычитывай RDR и не будет виснуть...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пт дек 06, 2013 13:50:33 
Нашел транзистор. Понюхал.
Аватар пользователя

Карма: 1
Рейтинг сообщений: -2
Зарегистрирован: Ср фев 09, 2011 13:29:01
Сообщений: 170
Откуда: г.Саратов
Рейтинг сообщения: 0
Да я же говорил уже, что дома и-нета нет, а на работу я такие вещи не ношу. Так что сегодня вечером попробую, завтра отпишусь.

_________________
Говорят, что у него нет носа и рта, и что он общается телепатией. Говорят, что у него зеленая кожа, и он питается как растение, закопав ноги в землю и подставив спину солнцу. Все что знаем мы: его зовут Вовэн.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пт дек 06, 2013 18:08:09 
Опытный кот
Аватар пользователя

Карма: 16
Рейтинг сообщений: 166
Зарегистрирован: Вс дек 02, 2012 16:58:33
Сообщений: 826
Откуда: Уже не город Белых гор
Рейтинг сообщения: 0
Влезу со своим вопросом.
У меня такая же проблема. Плата STM32F0Discovery. Процессор STM32F051R8
Настраиваю USART1
Передача работает прекрасно.
Приём делаю по прерыванию. Пока на приёмник не подаю данные, передача работает по таймеру. Как только принимается символ в USART, взводится прерывание и не сбрасывается флаг прерывания - процессор всё время находится в прерывании. Сбрасывание флага RXFRQ в теле прерывания не помогает.
Прошу помочь более опытных котов.
FreeRTOS работает, передача в очередях тоже, прикрепляю периферию.
Проект пишу в CooCox,

Инициализация USART:
Код:
void init_usart (void)
{
   GPIO_InitTypeDef  GPIO_InitStruct;
    USART_InitTypeDef USART_InitStructure;

    // установка пинов USART
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9;
   GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_AF;
   GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
   GPIO_InitStruct.GPIO_OType = GPIO_OType_PP;
   GPIO_InitStruct.GPIO_PuPd  = GPIO_PuPd_NOPULL;

    GPIO_Init(GPIOA, &GPIO_InitStruct);

    GPIO_InitStruct.GPIO_PuPd  = GPIO_PuPd_UP;
    GPIO_InitStruct.GPIO_Pin = GPIO_Pin_10;
    GPIO_Init(GPIOA, &GPIO_InitStruct);

    GPIO_PinAFConfig(GPIOA, GPIO_PinSource9, GPIO_AF_1);   // USART1_TX
    GPIO_PinAFConfig(GPIOA, GPIO_PinSource10, GPIO_AF_1);   // USART1_RX

    // Разрешить тактирование USART
    RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1, ENABLE);

    USART_InitStructure.USART_BaudRate = 9600;
    USART_InitStructure.USART_WordLength = USART_WordLength_8b;
    USART_InitStructure.USART_StopBits = USART_StopBits_1;
    USART_InitStructure.USART_Parity = USART_Parity_No;
    USART_InitStructure.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
    USART_InitStructure.USART_Mode = USART_Mode_Rx | USART_Mode_Tx;

     USART_Init(USART1, &USART_InitStructure);

   while (USART_GetFlagStatus(USART1, USART_FLAG_TC) == RESET)
   {}
     USART_ITConfig(USART1, USART_IT_RXNE, ENABLE);
     
   USART_Cmd(USART1, ENABLE);

}


Обработчик прерывания USART:
Код:
char string[20];

unsigned char counter = 0;
void USART1_IRQHandler (void)
{
   char litera = USART_ReceiveData(USART1);        // здесь читаю байт из USART
   portBASE_TYPE xHigherPriorityTaskWoken = pdFALSE;
   USART_RequestCmd(USART1, USART_Request_RXFRQ, ENABLE);   // здесь запись флага не помогает сбросить

   if ( (litera == '\r') || (counter >= 19) )
   {
      counter = 0;
      xQueueSendToBackFromISR (g.xOUT_USART1_Queue, &string, &xHigherPriorityTaskWoken);
      //memcpy(out_str, string, 20);
      if (xHigherPriorityTaskWoken == pdTRUE)
         taskYIELD();
   }
   else
   {
      string[counter++] = litera;
      string[counter] = 0;
   }
}


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пт дек 06, 2013 18:51:46 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
Где установка приоритета прерывания и разрешение самого прерывания ?
С чего сделаны выводы что прерывание обрабатывается ? :)))
В самом прерывании не лишней будет проверка флагов .
Доведет вас кактус и SPL до ручки... :)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пт дек 06, 2013 20:07:35 
Опытный кот
Аватар пользователя

Карма: 16
Рейтинг сообщений: 166
Зарегистрирован: Вс дек 02, 2012 16:58:33
Сообщений: 826
Откуда: Уже не город Белых гор
Рейтинг сообщения: 0
Я знаю, что недоглядел какую-то ерунду, но не могу сам найти причину.

Вот в прерываниях у STM я пока не разобрался.
Векторы прерывания устанавливаются в стартапе ассемблером:
Код:
 
g_pfnVectors:
  .word _eram
  .word Reset_Handler
  .word NMI_Handler
  .word HardFault_Handler
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word 0
  .word SVC_Handler         /*SVC_Handler*/
  .word 0
  .word 0
  .word PendSV_Handler      /*PendSV_Handler*/
  .word SysTick_Handler      /*SysTick_Handler*/
  .word WWDG_IRQHandler
  .word PVD_IRQHandler
  .word RTC_IRQHandler
  .word FLASH_IRQHandler
  .word RCC_IRQHandler
  .word EXTI0_1_IRQHandler
  .word EXTI2_3_IRQHandler
  .word EXTI4_15_IRQHandler
  .word TS_IRQHandler
  .word DMA1_Channel1_IRQHandler
  .word DMA1_Channel2_3_IRQHandler
  .word DMA1_Channel4_5_IRQHandler
  .word ADC1_COMP_IRQHandler
  .word TIM1_BRK_UP_TRG_COM_IRQHandler
  .word TIM1_CC_IRQHandler
  .word TIM2_IRQHandler
  .word TIM3_IRQHandler
  .word TIM6_DAC_IRQHandler
  .word 0
  .word TIM14_IRQHandler
  .word TIM15_IRQHandler
  .word TIM16_IRQHandler
  .word TIM17_IRQHandler
  .word I2C1_IRQHandler
  .word I2C2_IRQHandler
  .word SPI1_IRQHandler
  .word SPI2_IRQHandler
  .word USART1_IRQHandler
  .word USART2_IRQHandler
  .word 0
  .word CEC_IRQHandler
  .word 0
  .word BootRAM


Установка прерываний:
Код:
void init_nvic (void)
{
    NVIC_InitTypeDef NVIC_InitStructure;

   NVIC_InitStructure.NVIC_IRQChannel = USART1_IRQn;
   NVIC_InitStructure.NVIC_IRQChannelPriority = 0;
   NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;

   NVIC_Init(&NVIC_InitStructure);

}


В прервание я отладчиком попадаю, но впрерывании значение регистра USART_CR1 0000002d, то есть
флаг RXNEIE установлен и не сбрасывается при выходе из прерывания.
Где копать?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пт дек 06, 2013 20:29:31 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 1
GARMIN писал(а):
В прервание я отладчиком попадаю, но впрерывании значение регистра USART_CR1 0000002d, то есть
флаг RXNEIE установлен и не сбрасывается при выходе из прерывания.
Где копать?


Пока не поздно бросайте SPL вместе с кактусом, послушайте доброго совета.

Вот при чем здесь CR1 и RXNEIE ?
RXNEIE - это бит разрешения прерывания .
А флаг прерывания от приема USART - это RXNE и находится он в ISR .

ЗЫ. Сейчас последует реплика -" в AVR было проще" ... :)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пт дек 06, 2013 21:06:30 
Опытный кот
Аватар пользователя

Карма: 16
Рейтинг сообщений: 166
Зарегистрирован: Вс дек 02, 2012 16:58:33
Сообщений: 826
Откуда: Уже не город Белых гор
Рейтинг сообщения: 0
Я, наверное, не тот даташит смотрел. У меня есть RM0091 STM32F05 reference manual,
а мне нужен STM32F0x1
На сайте STM я его быстро не нашёл. Гугл не подсказывает. Кто знает ссылку?
В кокосе отображаются не те регистры, которые я вижу в даташите.


Вложения:
06.12.gif [15.17 KiB]
Скачиваний: 498
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пт дек 06, 2013 21:15:57 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
GARMIN писал(а):
Я, наверное, не тот даташит смотрел. У меня есть RM0091 STM32F05 reference manual,


Не надумывай , даташит именно тот .
А все беды от кактуса с SPL . :)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пт дек 06, 2013 21:39:41 
Опытный кот
Аватар пользователя

Карма: 16
Рейтинг сообщений: 166
Зарегистрирован: Вс дек 02, 2012 16:58:33
Сообщений: 826
Откуда: Уже не город Белых гор
Рейтинг сообщения: 0
Спасибо, хоть успокаиваешь.
Я так понял, что прерывание зацикливается.
После выполнения прерывания процессор тупо переходит на его начало
Код:
 97             string[counter] = 0;
08002ada:   ldr r3, [pc, #20]       ; (0x8002af0 <USART1_IRQHandler+136>)
08002adc:   ldrb r3, [r3, #0]
08002ade:   ldr r2, [pc, #24]       ; (0x8002af8 <USART1_IRQHandler+144>)
08002ae0:   movs r1, #0
08002ae2:   strb r1, [r2, r3]
 99       }
08002ae4:   mov sp, r7
08002ae6:   add sp, #8
08002ae8:   pop {r7, pc}      // вот отсюда шагаю прямо в начало прерывания
 nop ; (mov r8, r8)

Это происходит во время приёма второго символа.
То есть в буфере приёмника после передачи строки "45" оказываются символы "455555555555"
И я не совсем понимаю, при чём тут IDE. Компилятор то GCC, я смотрю выполнение программы компилятора.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пт дек 06, 2013 21:50:27 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 155
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
GARMIN писал(а):
Спасибо, хоть успокаиваешь.
Я так понял, что прерывание зацикливается.
После выполнения прерывания процессор тупо переходит на его начало


Значится флаг все таки сбрасывается ? :))) Ты просто не можешь проверить ибо кактус тебе его не покажет.
Предполагаю, что обработчик прерывания чрезмерно затянут и нагружен .
Выкинуть все оставив вычитку .
Это не IDE это ж..па . :)))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32F0 и USART
СообщениеДобавлено: Пт дек 06, 2013 22:10:21 
Опытный кот
Аватар пользователя

Карма: 16
Рейтинг сообщений: 166
Зарегистрирован: Вс дек 02, 2012 16:58:33
Сообщений: 826
Откуда: Уже не город Белых гор
Рейтинг сообщения: 0
По поводу прерывания проверю.
Чем предлагаешь пользоваться?
До этого я работал с IAR, хочу лучшего.


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 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