Skocz do zawartości

[C] Problem początkującego STM32f103c6t8


ozi(pl)

Pomocna odpowiedź

Witam jestem laikiem a strasznie chciałbym się nauczyć programować hobbistycznie. Czy będzie tutaj na tyle miła duszyczka która pomoże wciągnąć się w programowanie na podstawie moich pytań?

Na początek chciałbym się upewnić o same zapisy bo czasem spotykam się z takimi zapisami w kodach ( sam przy pomocy kolegi uczę się niestety poprzez różnicę wiedzy on za szybko to robi i chaotycznie i mi ciężko zrozumieć)

co dokładnie znaczy ten zapis

RCC->APB2ENR|=RCC_APB2ENR_AFIOEN | RCC_APB2ENR_IOPAEN | RCC_APB2ENR_IOPBEN;

czy to oznacza, ze w rejestrze RCC status APB2ENR włączam GPIO oraz porty PA PB?

		GPIOA->CRL &= ~(GPIO_CRL_CNF7); //stawia 0 
		GPIOA->CRL |= GPIO_CRL_MODE7;   //stawia 1 

a to dobrze wykomentowałem?

wiem, ze te linijki działają ponieważ bawię się programowalnymi ledami - proste funkcje do zmian koloru, które sam klepałem. Nie jestem zaawansowanym programista a laikiem, który bawi sie od jakiegos czasu narazie prostymi funkcjami. tak samo jak mam uruchomic obsluge przycisku na porcie PB1 jest to ADC12_IN9/ TIM3_CH4(9) wyczytane z referance maunal.

tak samo bardzo bym prosił o poprawienie moich komentarzy konfiguracji bo tutaj pomagał mi też znajomy pomagał uruchamiac - skasował cały plik i w paru linijkach skonfigurował mi go a ja sam komentowałem

#include "stm32f10x.h"
void SystemInit (void)
{
 //konfiguracja 
RCC->CR|=RCC_CR_HSION; //wlaczenie kwarca, ktory jest wbudowany
RCC->CIR = 0x00000000; //zerowanie bitow
while(!(RCC->CR & RCC_CR_HSIRDY)); // czekanie kiedy wypelni sie HSI
RCC->CFGR|=RCC_CFGR_PLLMULL; //wlacznie plmulla 
RCC->CR|=RCC_CR_PLLON;
while(!(RCC->CR & RCC_CR_PLLRDY));

//wlacznie komunikacji usart oraz timerow
RCC->CFGR|=RCC_CFGR_PPRE1_DIV2;
RCC->APB1ENR|=RCC_APB1ENR_PWREN;
//rezerwacja pamieci flash
FLASH->ACR |= FLASH_ACR_PRFTBE; //flash w rejestre ACR wlacz jedynke bitu FlASH_ACR_PRFTBE
FLASH->ACR &= (uint32_t)((uint32_t)~FLASH_ACR_LATENCY);
 FLASH->ACR |= (uint32_t)FLASH_ACR_LATENCY_2; //austawienie opoznienia zapisu flash dla jednego okresu dla 24mh
RCC->CFGR|=RCC_CFGR_SW_1; //ustawienie HSE jako zegar czasowy systemu



}



Dziękuję za pomoc oraz mam nadzieję, że nie urażę tutaj nikogo brakiem wiedzy. Szukam jakiejś też dobrej książki do nauki ARMów w C.

Pozdrawiam

Link do komentarza
Share on other sites

ozi(pl), nie gniewaj się ale pisanie praktycznie losowych programów i pytanie czy dobrze to nie najlepsza metoda nauki programowania. Masz tyle błędów w kodzie, że nawet nie wiadomo od czego zacząć.

Na forum znajdziesz dwa kursy programowania układów stm32 - jeden kurs oparty o układy F1 i bibliotekę StdPeriph, drugi F4 i bibliotekę Cube. Może warto zacząć od jednego z nich?

Jeśli bardzo chcesz programować na gołych rejestrach, musisz poszukać jakiegoś "tutoriala" w sieci - wydaje mi się, że będzie Ci ciężko zacząć od tak niskopoziomowego podejścia.

Link do komentarza
Share on other sites

to nie są tak losowe progarmy ponieważ one działają dobrze. wiec jestem ciekaw jakie bledy moga byc w komentarzu poniewaz przyznaje sie ze ucze sie i nie jestem pewien czy dobrze zrozumialem note katalogowa

Link do komentarza
Share on other sites

Ok, sorki może trochę pochopnie oceniłem Twój program, ale jak zobaczyłem:

            GPIOA->CRL &= ~(GPIO_CRL_CNF7); //stawia 0 
           GPIOA->CRL |= GPIO_CRL_MODE7;   //stawia 1 

od razu założyłem, że używasz rejestru CRL do sterowania wyjściami (co nie jest niemożliwe wbrew pozorom). Moim zdaniem musisz popracować nad czytelnością komentarzy, bo "stawia 0" dla mnie brzmi od razu, że zero jest na wyjsciu, a nie że zerujesz bit - przecież to każdy widzi 😉

Nie bardzo wiem, co mogę poradzić - nadal polecam kursy z Forbota. Ale jeśli bardzo chcesz programować na gołych restrach możesz rzucić okiem na mojego niedokończonego bloga: https://stm32pb.blogspot.com - planowałem przerobić przykłady z kursu F1 na gołe rejestry, ale jakoś zabrakło czasu i chęci. Z drugiej strony obsługę GPIO masz opisaną, więc może chociaż to się przyda.

Link do komentarza
Share on other sites

Zarejestruj się lub zaloguj, aby ukryć tę reklamę.
Zarejestruj się lub zaloguj, aby ukryć tę reklamę.

jlcpcb.jpg

jlcpcb.jpg

Produkcja i montaż PCB - wybierz sprawdzone PCBWay!
   • Darmowe płytki dla studentów i projektów non-profit
   • Tylko 5$ za 10 prototypów PCB w 24 godziny
   • Usługa projektowania PCB na zlecenie
   • Montaż PCB od 30$ + bezpłatna dostawa i szablony
   • Darmowe narzędzie do podglądu plików Gerber
Zobacz również » Film z fabryki PCBWay

To znaczy ja sie nie gniweam czy czuje sie obrazony tylko bylem ciekaw co molgoby byc nie tak skoro porgoram bardzo ladnie hula. chodzi o to, ze znajomy ruszyl mi procka od 0 a ze postanowilem troche bardziej zaglebic sie w ten temat (zaczelo mnie to bardziej interesowac) postanowilem sobie wykomentowac to co uwazam. I tak stawia zero mialem na mysli w bicie 🙂

[ Dodano: 05-10-2017, 08:16 ]

Powiem Ci, ze bardzo spodobał mi się twoj blog i mam nadzieję, ze rozwiniesz go bardziej 🙂

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.