Например TDA7294

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





Текущее время: Сб июл 19, 2025 13:07:12

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


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



Начать новую тему Ответить на тему  [ Сообщений: 8826 ]     ... , , , 213, , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн авг 06, 2018 14:51:51 
Собутыльник Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 428
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2529
Рейтинг сообщения: 0
Ярослав555, КЭП! Вы снова с нами?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн авг 06, 2018 14:56:03 
Друг Кота

Карма: 20
Рейтинг сообщений: 223
Зарегистрирован: Пт сен 13, 2013 13:11:31
Сообщений: 6443
Рейтинг сообщения: 0
Еще раз, медленно и печально. Макроопределение

Код:
#define     __O     volatile             /*!< Defines 'write only' permissions */

не порождает write-only конструкции, хоть вы мне еще десять раз подряд опишите, каково назначение volatile. И минусуете вы не разобравшись тоже неизвестно с какого перепугу.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн авг 06, 2018 15:37:35 
Встал на лапы
Аватар пользователя

Карма: 3
Рейтинг сообщений: 10
Зарегистрирован: Пн ноя 07, 2016 12:14:14
Сообщений: 134
Рейтинг сообщения: 0
Добрый день. Не работает SD карта. Не хочет работать даже f_mount библиотеки FATFS.
Вылетает в HardFault_Handler.
Код:
int main(void)
{

FRESULT res;
  FATFS fileSystem;
  FIL testFile;
  uint8_t testBuffer[16] = "SD write success";
  UINT testBytes;

  HAL_Init();

  SystemClock_Config();

  MX_GPIO_Init();
  MX_SDIO_SD_Init();
  MX_FATFS_Init();



if(f_mount(&fileSystem, SDPath, 1) != FR_OK)
  {

  Error_Handler();
  }
    uint8_t path[13] = "testfile.txt";
    path[12] = '\0';
 
    res = f_open(&testFile, (char*)path, FA_WRITE | FA_CREATE_ALWAYS);
 
    res = f_write(&testFile, testBuffer, 16, &testBytes);
 
    res = f_close(&testFile);   
  while (1)
  {
    temp++;
  }
}


void MX_SDIO_SD_Init(void)
{

  hsd.Instance = SDIO;
  hsd.Init.ClockEdge = SDIO_CLOCK_EDGE_RISING;
  hsd.Init.ClockBypass = SDIO_CLOCK_BYPASS_DISABLE;
  hsd.Init.ClockPowerSave = SDIO_CLOCK_POWER_SAVE_DISABLE;
  hsd.Init.BusWide = SDIO_BUS_WIDE_1B;
  hsd.Init.HardwareFlowControl = SDIO_HARDWARE_FLOW_CONTROL_DISABLE;
  hsd.Init.ClockDiv = 3;

}


Если в последнем аргументе f_mount выставить 0(отложенное монтирование), то функция конечно выполнится, но следующая выкинет в тот же HardFault_Handler.
Пример стандартный. Периферию настраивал куб. Все компилируется нормально. В чем может быть проблема? Схема подключения во вложении. Ноги соответствуют мк конфигурации CUBE. Внешний кварц на 8 МГЦ даст 30МГц на шину APB1. Контроллер STM32f207

Странно, что куб выставил hsd.Init.BusWide = SDIO_BUS_WIDE_1B для 4 битной шины, но и с hsd.Init.BusWide = SDIO_BUS_WIDE_4B так же вылетает ошибка


Вложения:
Без имени.png [45.97 KiB]
Скачиваний: 616

_________________
Я конечно все понимаю, но этого я не понимаю.
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн авг 06, 2018 16:25:35 
Собутыльник Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 428
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2529
Рейтинг сообщения: 0
Стек с запасом? HardFault на кортекс-м подругому трудно получить.


Вернуться наверх
 
Выбираем индустриальные и медицинские источники питания MEAN WELL в открытом исполнении

Использование модульных источников питания открытого типа широко распространено в современных устройствах. Присущие им компактность, гибкость в интеграции и высокая эффективность делают их отличным решением для систем промышленной автоматизации, телекоммуникационного оборудования, медицинской техники, устройств «умного дома» и прочих приложений. Рассмотрим подробнее характеристики и особенности трех самых популярных вариантов AC/DC-преобразователей MW открытого типа, подходящих для применения в промышленных устройствах - серий EPS, EPP и RPS представленных на Meanwell.market.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн авг 06, 2018 16:53:57 
Друг Кота

Карма: 38
Рейтинг сообщений: 618
Зарегистрирован: Пн апр 06, 2015 11:01:53
Сообщений: 3092
Откуда: москва, уфа
Рейтинг сообщения: 2
Армы наворотили вот таких макросов, только непонятно, с какой целью?

да просто в целях самодокументирования кода, чтобы из объявления переменной сразу было видно, какое оно, без лазания в даташит. Можно бы было сделать и типа вот так, я такое видел - с пустыми макросами
Код:
#define __I
#define __IO
#define __O
...

__I volatile uint16_t *FOO_register;
__IO volatile uint16_t *BAR_register;

но один фиг все будет volatile, так почему бы и не запихать и его тоже в макрос?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн авг 06, 2018 16:54:39 
Собутыльник Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 428
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2529
Рейтинг сообщения: 0
a5021, касательно утреннего |= сегодняшний пример с дружественного форума.

Код:
I2C1->CR1 |= I2C_CR1_SWRST;
I2C1->CR2 &= ~I2C_CR2_FREQ;
I2C1->TRISE =3;
I2C1->CR2 |= 2;
I2C1->CCR  = 80;   //Clock_Speed   100 000
I2C1->CR1 |= I2C_CR1_PE;
I2C1->CR1 |= I2C_CR1_ACK;
//I2C1->CR1 |= I2C_CR1_SMBTYPE; //
//I2C1->CR1 |= I2C_CR1_SMBUS;     //
Явление повсеместное, я его даже у настоящих Гуру ловил. Странно ещё, что CCR минула сия чаша.
:cry:


Вернуться наверх
 
Распродажа паяльного оборудования ATTEN!
Паяльные станции, паяльники и аксессуары по самой выгодной цене.

По промокоду radiokot скидка 10%
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн авг 06, 2018 19:14:00 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 20
Рейтинг сообщений: 648
Зарегистрирован: Пт май 31, 2013 17:14:38
Сообщений: 2081
Откуда: Украина, Винница
Рейтинг сообщения: 0
Стек с запасом? HardFault на кортекс-м подругому трудно получить.

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

Добавлено after 16 minutes 28 seconds:
да просто в целях самодокументирования кода, чтобы из объявления переменной сразу было видно, какое оно, без лазания в даташит.

+ потом, если появятся какие опции для ридонли/врайтонлди регистров, можно просто поправить макрос.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт авг 07, 2018 08:26:09 
Встал на лапы

Зарегистрирован: Вс мар 01, 2009 20:41:19
Сообщений: 125
Рейтинг сообщения: 0
Здравствуйте, может кто знает при использовании HAL_FLASHEx_Erase при попытки стереть страницу FLASH_WaitForLastOperation впадает в бесконечный цикл, пробовал

Код:
FLASH_Erase_Sector(FLASH_SECTOR_4, VOLTAGE_RANGE_3);
HAL_Delay(100);


работает нормально, интересно почему контроллер не отпускает флаг __HAL_FLASH_GET_FLAG(FLASH_FLAG_BSY) ?
прошивку точно не задеваю.

Спойлер
Код:
HAL_StatusTypeDef STM32_FlashWrite(void *src,void *dst,size_t n)
{
   HAL_StatusTypeDef status;
   //HAL_FLASH_Unlock();
   //if(status != HAL_OK)
   //   goto error;

   for(size_t addr = 0; addr<n; addr++) {
      if(HAL_FLASH_Program(TYPEPROGRAM_BYTE, dst,*(uint8_t *) src) != HAL_OK) {
         goto error;
      }
      dst++;
      src++;
   }

error:
   //HAL_FLASH_Lock();
   return status;
}

HAL_StatusTypeDef STM32_FlashErase1(uint32_t begin,uint32_t count)
{

   HAL_StatusTypeDef status = HAL_FLASH_Unlock();
   if(status != HAL_OK) {
      printf_dbg("STM32_FlashErase Unlock error\n");
      goto error;
   }

   uint32_t PageError = 0;

   FLASH_EraseInitTypeDef EraseInitStruct;

   EraseInitStruct.TypeErase      = TYPEERASE_SECTORS;
   EraseInitStruct.Sector         = FLASH_SECTOR_5;
   EraseInitStruct.NbSectors      = 1;
   EraseInitStruct.VoltageRange   = FLASH_VOLTAGE_RANGE_4;

   status = HAL_FLASHEx_Erase(&EraseInitStruct, &PageError);

   FLASH_Erase_Sector(FLASH_SECTOR_5, VOLTAGE_RANGE_3);
   HAL_Delay(100);

   void *addr = (void*)0x08020000;
   char text[] = "Test Write MEM\n";
   STM32_FlashWrite(text,addr,strlen(text));

error:
   HAL_FLASH_Lock();
   return status;
}

(char*)0x08000000
00|00|03|20|b5|53|00|08|39|53|
(char*)0x08004000
c1|e7|20|46|01|aa|21|49|ff|f7|
(char*)0x08008000
00|00|00|00|00|00|00|00|00|00|
(char*)0x0800C000
6d|65|2f|69|76|61|6e|2f|53|54|
(char*)0x08010000
54|65|73|74|20|57|72|69|74|65|
(char*)0x08020000
54|65|73|74|20|57|72|69|74|65|
(char*)0x08040000
ff|ff|ff|ff|ff|ff|ff|ff|ff|ff|
(char*)0x08060000
ff|ff|ff|ff|ff|ff|ff|ff|ff|ff|



ошибся вместо VOLTAGE_RANGE_3 поставил VOLTAGE_RANGE_4 ...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вт авг 07, 2018 15:40:46 
Встал на лапы
Аватар пользователя

Карма: 3
Рейтинг сообщений: 10
Зарегистрирован: Пн ноя 07, 2016 12:14:14
Сообщений: 134
Рейтинг сообщения: 0
Проблема решилась. Всему виной переполнение стека. Просто нужно было увеличить его размер.

_________________
Я конечно все понимаю, но этого я не понимаю.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Вс авг 12, 2018 23:43:16 
Поставщик валерьянки для Кота

Карма: 16
Рейтинг сообщений: 329
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Сообщений: 2222
Откуда: Tashkent
Рейтинг сообщения: 0
Обычно запуск процесса отладки кода включает в себя прошивку памяти, сброс, пуск программы. Таким образом программа всегда начинается с Startup или функции main.
Бывают моменты когда желательно подключиться к странно работающему устройству и посмотреть что там не так. То есть присоединиться без сброса программы.
Недавно слышал что IAR такое позволяет.
Я работаю в Keil 4.74(можно и 5 версию). Пробовал разные настройки ST-link, но что-то не получилось.
Есть ли решение?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн авг 13, 2018 06:05:09 
Собутыльник Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 428
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2529
Рейтинг сообщения: 0
Я не работаю в Keil, но с ходу вижу два места где это можно сделать. 1. На вкладке Debug есть галка загружать образ. 2. В настройках ST-Link на вкладке Flash Download есть всё что касается прошивки.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн авг 13, 2018 08:32:05 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 20
Рейтинг сообщений: 648
Зарегистрирован: Пт май 31, 2013 17:14:38
Сообщений: 2081
Откуда: Украина, Винница
Рейтинг сообщения: 0
Недавно слышал что IAR такое позволяет.

Есть такое дело. На картинке авр-проект, но уверяю Вас - с STM тоже самое, дома через ST-link пользую. Есть нюанс, что при таком подключении деактивируются все установленные брекпоинты - нужно стать на паузу и проставить их заново, ну или просто поставить в случае стмки.

Добавлено after 8 minutes 1 second:
Кстати, не думал что для этого что-то надо настраивать - всегда работало сразу из коробки.


Вложения:
debug.png [52.05 KiB]
Скачиваний: 233
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн авг 13, 2018 08:47:02 
Поставщик валерьянки для Кота

Карма: 16
Рейтинг сообщений: 329
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Сообщений: 2222
Откуда: Tashkent
Рейтинг сообщения: 0
Вот с такими настройками Keil подключается и шагает только по дизасм коду. Breakpoints не работает.
Если ставлю галочку Load Application at Startup, то отладка по коду СИ тоже работает, но происходит сброс и программа начинается с Startup.


Вложения:
settings-debug.PNG [22.01 KiB]
Скачиваний: 537
debug.PNG [15.49 KiB]
Скачиваний: 218
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн авг 13, 2018 08:47:34 
Собутыльник Кота
Аватар пользователя

Карма: 18
Рейтинг сообщений: 428
Зарегистрирован: Вт май 01, 2018 19:44:47
Сообщений: 2529
Рейтинг сообщения: 0
Ярослав555, если бы вы были хоть немного внимательней... Вопрос не про IAR, в нём прямо кнопка есть для этого, а про Keil.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Пн авг 13, 2018 08:52:59 
Поставщик валерьянки для Кота
Аватар пользователя

Карма: 20
Рейтинг сообщений: 648
Зарегистрирован: Пт май 31, 2013 17:14:38
Сообщений: 2081
Откуда: Украина, Винница
Рейтинг сообщения: 0
я внимательно прочитал, и совершенно точно понял суть вопроса, только ответа у меня на него нет. Автор написал что "слышал" что такое есть, ну я подтвердил эту информацию.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Ср авг 15, 2018 07:46:26 
Друг Кота
Аватар пользователя

Карма: 25
Рейтинг сообщений: 99
Зарегистрирован: Вс янв 24, 2010 19:19:52
Сообщений: 4468
Откуда: Главный Улей России (Moscow)
Рейтинг сообщения: 0
Задавал этот вопрос в другой ветке, но там пару дней никто не отвечает. Продублирую тут.

Вопрос по таймеру TIM1 на STM32F407
В даташите (REF. MAN) говорится, что в режиме One Pulse таймер по триггеру запускается и останавливается
как только произойдет событие Update.
Там же (в даташите) говорится, что если в Repetition Counter задать значение больше нуля, то событие Update сгенерируется
только после того, как таймер "прокрутится" N-ное количество раз.
Означает ли это, что если я настрою таймер в One Pulse режим, задам в Repetition Counter к примеру, значение '1',
то таймер "прокрутится" два раза и остановится? (выдав мне два импульса, если я еще буду использовать PWM или Output Compare
для вывода этих импульсов за пределы кристалла)
Задача состоит в том, чтобы таймер выдал два-три (или более) одинаковых по длине импульса и остановился,
при этом дернув DMA для обновления данных в compare регистрах (как их обновить за один пинок DMA - я знаю)
При этом, запуск должен быть по внешнему импульсу, только по фронту, а спад должен игнорироваться,
так как он может произойти в любой момент.

Просто свободная плата с STM32F407 у меня будет только в понедельник следующей недели (может и раньше, но это не точно)
проверил бы сам, однако я делаю схему и печатку и из-за этого момента у меня останавливаются работы со схемой,
пока я не выясню этот момент с таймером. От него зависит схема, причем существенно.

_________________
I am DX168B and this is my favourite forum on internet!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Ср авг 15, 2018 19:16:44 
Друг Кота
Аватар пользователя

Карма: 1
Рейтинг сообщений: 178
Зарегистрирован: Пн окт 11, 2010 19:00:08
Сообщений: 3377
Рейтинг сообщения: 0
uk8amk писал(а):
Обычно запуск процесса отладки кода включает в себя прошивку памяти, сброс, пуск программы. Таким образом программа всегда начинается с Startup или функции main. Бывают моменты когда желательно подключиться к странно работающему устройству и посмотреть что там не так. То есть присоединиться без сброса программы.
Не кеил, но может наведет на какие-то мысли. http://purebasic.mybb.ru/viewtopic.php?id=564#p7600


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Ср авг 15, 2018 20:59:49 
Друг Кота
Аватар пользователя

Карма: 30
Рейтинг сообщений: 156
Зарегистрирован: Пн июл 28, 2008 22:12:01
Сообщений: 3604
Рейтинг сообщения: 0
Нет Мурик, ответ неверный. Для этого есть одно решение-Ozone, естественно с Jlink.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Ср авг 15, 2018 22:42:22 
Поставщик валерьянки для Кота

Карма: 16
Рейтинг сообщений: 329
Зарегистрирован: Вт ноя 27, 2007 11:32:06
Сообщений: 2222
Откуда: Tashkent
Рейтинг сообщения: 0
Нашёл описание решения для кейла на примере ULINK
Цитата:
µVISION DEBUGGER: Connect to a running target without hardware reset

http://www.keil.com/support/docs/3697.htm
Немного заморочено выглядит правда.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: STM32 новичку в ARM что к чему
СообщениеДобавлено: Ср авг 15, 2018 23:19:06 
Друг Кота

Карма: 20
Рейтинг сообщений: 223
Зарегистрирован: Пт сен 13, 2013 13:11:31
Сообщений: 6443
Рейтинг сообщения: 0
Теоретически, это может и для ст-линка сработать. В документации на ст-линк описывается режим HOTPLUG, который позволяет подключиться к цели на ходу, без сброса оной.


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

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


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4


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

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


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