Skocz do zawartości

Mellon

Użytkownicy
  • Zawartość

    152
  • Rejestracja

  • Ostatnio

  • Wygrane dni

    3

Mellon wygrał w ostatnim dniu 22 października 2017

Mellon ma najbardziej lubianą zawartość!

Reputacja

5 Neutralna

O Mellon

  • Ranga
    5/10
  • Urodziny 30.12.1976

Informacje

  • Płeć
    Mężczyzna
  • Lokalizacja
    Gdańsk
  • Języki programowania
    C#,Matlab,C
  • Zainteresowania
    elektroenergetyka
  • Zawód
    automatyk

Ostatnio na profilu byli

196 wyświetleń profilu
  1. Podczas próby kompilacji przykładu UART_TwoBoards_ComPolling wystąpił błąd linkowania. Katalogi przykładów mają porozrzucane pliki. Utworzyłem nowy projekt dla Nucleo. Uzupełniłem katalogi inc/src plikami z przykładu (po dołączeniu plików stm32h7xx_nucleo_144.h/.c) otrzymuję Building target: TestUART.elf Invoking: MCU GCC Linker arm-none-eabi-gcc -mcpu=cortex-m7 -mthumb -mfloat-abi=hard -mfpu=fpv5-d16 -T"C:/STM32_H7/TestUART/LinkerScript.ld" -Wl,-Map=output.map -Wl,--gc-sections -o "TestUART.elf" @"objects.list" -lm c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.16.0.201807130628/tools/compiler/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/bin/ld.exe: .ARM has both ordered and unordered sections c:/ac6/systemworkbench/plugins/fr.ac6.mcu.externaltools.arm-none.win32_1.16.0.201807130628/tools/compiler/bin/../lib/gcc/arm-none-eabi/7.2.1/../../../../arm-none-eabi/bin/ld.exe: final link failed: Bad value collect2.exe: error: ld returned 1 exit status makefile:35: recipe for target 'TestUART.elf' failed make: *** [TestUART.elf] Error 1 .ARM has both ordered and unordered sections Z czego to wynika? Co to oznacza?
  2. Niestety trochę różnic jest. A diabeł tkwi w szczegółach. Niby HAL (abstrakcyjna warstwa niezależna od sprzętu), ale sporo się różni dla F1, F4 i H7. Co ciekawe nie wynika to z różnic sprzętowych.
  3. Wtedy prościej utworzyć bibliotekę statyczną z poprawioną wartością tej zmiennej, ustawieniami zegarów (HSE), itp. i wydzielić do katalogu z którego wszystkie projekty dot. tej rodziny STM32 będą korzystać. Wbudowany generator RC w pełnym zakresie temperatur ma wahania częstotliwości rzędu kilku procent. Natomiast rezonatory kwarcowe/ceramiczne mają wahania częstotliwości rzędu 15-30 ppm ((parts per million). Koszt takiego to ok 2 zł. A taki rezonator mamy w Nucleo jeśli nie odłamiemy programatora. W przypadku wykorzystania do komunikacji, synchronizacji z innymi urządzeniami wymagany jest stabilny sygnał zegarowy. Dlaczego by nie skorzystać z niego.
  4. Co prawda podczas debugowania po wywołaniu HAL_Init zmienna SystemCoreClock miała wartość 8MHz, pomimo że nie ustawiłem jej na prawidłową wartość. Ustawia ją SystemCoreClockUpdate(). Lecz nie wiem w którym momencie jest wywoływana tj. czy przed pierwszym użyciem tej zmiennej.
  5. Dzięki Elvis Właśnie tego brakowało w kursie o przerwaniach. Wystarczy pierwsza z nich. Drga służy do wybrania grupy od 1 do 4 (priorytetów i podpriorytetów) HAL_NVIC_SetPriority(EXTI15_10_IRQn,0,0); HAL_NVIC_EnableIRQ(EXTI15_10_IRQn);
  6. Mam pytanie dot. przerwań. W SPL wyglądało to tak: wybranie grupy priorytetów (jest w HAL_Init()) ustawienie priorytetu i sub-priorytetu, kanału i jego włączenie NVIC_InitStruct :NVIC_Init Skonfigurowanie GPIO :GPIO_Init Ustawienie źródła przerwania GPIO_EXTILineConfig Skonfigurowanie kontrolera zewnętrznych przerwań/zdarzeń (sygnał opadający/rosnący oba): EXTI_Init() Utworzenie funkcji przerwania. Jak ustawić priorytety przerwania w HAL?
  7. Korzystając z rezonatora w programatorze: HAL_Init(); RCC_OscInitTypeDef osc; osc.OscillatorType = RCC_OSCILLATORTYPE_HSE; osc.HSEState = RCC_HSE_BYPASS; osc.HSIState = RCC_HSI_OFF; osc.PLL.PLLState = RCC_PLLSOURCE_HSE; osc.PLL.PLLMUL = RCC_PLL_MUL9; HAL_RCC_OscConfig(&osc); RCC_ClkInitTypeDef clk; clk.ClockType = RCC_CLOCKTYPE_HCLK | RCC_CLOCKTYPE_SYSCLK | RCC_CLOCKTYPE_PCLK1 | RCC_CLOCKTYPE_PCLK2; clk.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK; clk.AHBCLKDivider = RCC_SYSCLK_DIV1; clk.APB1CLKDivider = RCC_HCLK_DIV2; clk.APB2CLKDivider = RCC_HCLK_DIV1; HAL_RCC_ClockConfig(&clk, FLASH_LATENCY_2); SystemCoreClockUpdate(); Tylko nie wiem jak sprawdzić częstotliwość rdzenia z jaką on rzeczywiście pracuje?
  8. #include "stm32f1xx.h" int main(void) { SystemCoreClock = 8000000; // taktowanie 8Mhz HAL_Init(); Przyznasz, że to dziwna konstrukcja.
  9. Ja bym proponował napisać odcinek kursu. To wszyscy by zrozumieli co i jak. Bez tego to czarna magia będzie dla innych czemu z 72MHz zmieniamy na 8MHz. Jak coś napiszę mogę podesłać.
  10. Zgadza się. Sygnał MCO z programatora jest podłączony do F103RB (poprzez zworki SB16, SB50). Jeśli mikrokontroler programatora(STM32F103CBT6) ma ustawiony MCU na HSE to mamy 8 MHz. Warto byłoby wiedzieć jak w HAL ustawiane są sygnały zegarowe. Wiem, że najpierw ustawiany jest wewnętrzny zegar HSI potem jak on się poprawnie uruchomi to można zmienić na HSE. Ale warto co na jakiej szynie czym jest taktowane.
  11. Warto może dodać odcinek o sygnałach zegarowych i procedurze uruchamiania mikrokontrolera. Treker // Posty zostały wydzielone z poniższego tematu:
  12. Może nie ograniczajmy się tylko do podstaw. Tym bardziej, że dużo zaawansowanych projektów widzę na tym forum. A tu DSP, jednostka zmienno-przecinkowa, grafika - tworzenie atrakcyjnych menu -TouchGFX i wiele innych. Zatem jest miejsce na podstawy jak i bardziej zaawansowane
  13. Zgadza się. Może warto kurs zrobić do Nucleo-H743ZI? To już zupełnie inny sprzęt niż F103. Dziękuję Elvis za rzeczową odpowiedź:) Pozdrawiam
  14. Projektowanie układów z sygnałami m.cz. to nie to samo co w.cz. Myślę, że co innego to odporność na zakłócenia elektromagnetyczne a co innego ich emisja w urządzeniach wykorzystując częstotliwość 50MHz lub 1 GHz. Ponadto spektrum częstotliwości zakłóceń jest szersze niż pasmo częstotliwościowe używanego sygnału. Powołując się na normę warto przytoczyć jej numer.
×