Skocz do zawartości

Qwazi

Użytkownicy
  • Zawartość

    12
  • Rejestracja

  • Ostatnio

Reputacja

0 Neutralna

O Qwazi

  • Ranga
    2/10

Informacje

  • Płeć
    Mężczyzna
  • Zawód
    student
  1. ps19 dzięki wielkie za pomoc! Rosyjskiego (?) nie umiem, ale sobie jakos poradze Bardzo mi przybliżyłeś temat. Dzięki!
  2. Witam Was, Planuję zrobić pomiar prądu z baterii za pomocą przetwornika ADC. Używam zewnętrznego czujnika prądu (ACS712ELCTR-05B-T) oraz płytki STM32F103rb. Czy ktoś z Was robił coś podobnego lub wie jak to ogarnąć i mógłby się podzielić swoją wiedzą na ten temat? Pozdrawiam
  3. Mam dość głupie, ale ważne dla mnie pytanie. Skąd wartość napięcia referencyjnego 1.2V? Mógłby mi ktoś to wytłumaczyć? Szukam w dokumentacji ale nigdzie tej informacji znaleźć nie mogę (zapewne szukam źle).
  4. Ups, nie wiem czemu tutaj napisałem ten komentarz. Chciałem chyba napisac go pod innym postem. Oczywiscie rozumiem i zamykam tą kwestię
  5. Witam. Poradnik rewelacja. Po 4 dniach udało mi się nawiązać komunikację przez UART. Wszystkie etapy kursu wykonałem poza jednym. Chodzi o USART_FLAG_RXNE. Po napisaniu kodu i skompilowaniu w komunikatorze nie wyświetla się nic, jakby program był w martwej pętli. Program stoi w miejscu. Z tego co widzę, to kod odbierania danych niewiele się różni od wysyłania. Jedyną różnicą jest dodanie własnie jednej formuły: while(1){ GPIO_SetBits(GPIOB, GPIO_Pin_7); delay_ms(100); GPIO_ResetBits(GPIOB, GPIO_Pin_7); delay_ms(100); if (USART_GetFlagStatus(USART3, USART_FLAG_RXNE)) { char c = USART_ReceiveData(USART3); switch (c) { case 'a': printf("Odebrano komunikat A!\r\n"); break; case 'b': printf("Odebrano komunikat B!\r\n"); break; default: printf("Nieznany komunikat:(\r\n"); break; } } } Robię na innej płytce, ale wszystko jeest analogiczne.
  6. Zastosowałem się do rad, kod wygląda tak: #include "stm32f4xx.h" #include <stdio.h> void send_char(char c){ while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET); USART_SendData(USART2, c); } void send_string(const char* s){ while (*s) send_char(*s++); } volatile uint32_t timer_ms = 0; void SysTick_Handler() { if (timer_ms) { timer_ms--; } } void delay_ms(int time) { timer_ms = time; while (timer_ms) {}; } int main(void) { GPIO_InitTypeDef gpio; USART_InitTypeDef usart; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOB,ENABLE); RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOD,ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2,ENABLE); GPIO_PinAFConfig(GPIOD, GPIO_PinSource5, GPIO_AF_USART2); GPIO_PinAFConfig(GPIOD, GPIO_PinSource6, GPIO_AF_USART2); GPIO_StructInit(&gpio); USART_StructInit(&usart); //LED gpio.GPIO_Pin = GPIO_Pin_7; gpio.GPIO_Mode = GPIO_Mode_OUT; GPIO_Init(GPIOB, &gpio); //USART //Tx gpio.GPIO_Pin=GPIO_Pin_5; gpio.GPIO_Mode=GPIO_Mode_AF; GPIO_Init(GPIOD,&gpio); //Rx gpio.GPIO_Pin=GPIO_Pin_6; gpio.GPIO_Mode=GPIO_Mode_IN; GPIO_Init(GPIOD,&gpio); //USART Config usart.USART_BaudRate = 115200; USART_Init(USART2,&usart); USART_Cmd(USART2,ENABLE); SysTick_Config(SystemCoreClock / 1000); while(1){ GPIO_SetBits(GPIOB, GPIO_Pin_7); delay_ms(100); GPIO_ResetBits(GPIOB, GPIO_Pin_7); delay_ms(100); send_string("Hello\r\n"); } } i nadal nic... Zaczynam myśleć, że jest to problem ze sterownikami, gdyż po napisaniu tego programu dioda działa jak powinna i w momencie jej zapalenia powinienem mieć komunikat, a komunikatu brak. P.S. Zrobione! 4dni kombinowania i działa. Zmiana w rejestrach, dokładne przeczytanie dokumentacji, lekka modyfikacja i działa jak powinno!
  7. Witam Was, znowu muszę sie poradzić. próbuję nawiązać komunikację przez UART. Postępowałem jak w kursie, dioda miga tak jak powinna, zmieniłem port pod swoje urządzenie i w nic. Na ekranie nadal czarno, jakby połączenie nie zostało nawiązane. Wiecie możę czym to może być spowodowane? Posiadam trochę inną płytkę, ale wszystko pod nią zmieniłem.
  8. Witam, Posiadam płytkę STM32F4 Nucleo F446ZE. Korzystam z kursu pod STM32F1. Utknąłem w miejscu z komunikacją UART. Próbowałem dostosować program do swojej płytki, następuje debugowanie lecz brak rezultatów w Tera Term. Czy ktoś może programował tą płytkę, wie o co chodzi? Załączam swój program: /** ****************************************************************************** * @file main.c * @author Ac6 * @version V1.0 * @date 01-December-2013 * @brief Default main function. ****************************************************************************** */ #include "stm32f4xx.h" void send_char(char c) { while (USART_GetFlagStatus(USART2, USART_FLAG_TXE) == RESET); USART_SendData(USART2, c); } void send_string(const char* s) { while (*s) send_char(*s++); } int main(void) { GPIO_InitTypeDef gpio; USART_InitTypeDef uart; RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA | RCC_AHB1Periph_GPIOB | RCC_AHB1Periph_GPIOC | RCC_AHB1Periph_GPIOD | RCC_AHB1Periph_GPIOG, ENABLE); RCC_APB2PeriphClockCmd(RCC_APB2Periph_SYSCFG, ENABLE); RCC_APB1PeriphClockCmd(RCC_APB1Periph_USART2, ENABLE); GPIO_StructInit(&gpio); gpio.GPIO_Pin = GPIO_Pin_5; gpio.GPIO_Mode = GPIO_Mode_AF; gpio.GPIO_OType = GPIO_OType_PP; GPIO_Init(GPIOD, &gpio); gpio.GPIO_Pin = GPIO_Pin_6; gpio.GPIO_Mode = GPIO_Mode_IN; GPIO_Init(GPIOD, &gpio); USART_StructInit(&uart); uart.USART_BaudRate = 9600; USART_Init(USART2, &uart); USART_Cmd(USART2, ENABLE); while (1) { send_string("Hello world! \r\n"); } }
  9. No ok, trochę nakierowałeś mnie na rozwiązanie mojego problemu. Będę szukał jeszcze wskazówek na ten temat. Dzięki! P.S. Program działa. 4 dni pracy i wszystko gra jak powinno!
  10. W takim razie znasz jakiś sposób, żeby to zadziałało tak jak powinno?
  11. słyszałem słyszałem, jak widać w programie nawet próbowałem tego użyć, ale po użyciu własnie delay żadna dioda się nie zapalała. Zdziwiło mnie to, bo według kursu funkcja opóźniająca, przyjmująca jako parametr czas opóźnienia w milisekundach to własnie HAL_Delay(delay_time_in_miliseconds) Nawet jeśli, to kopiując jużgotowy fragment bez Delay, usuwając 1 diodę (bo u mnie są 3) i zmieniając parametry program powinien działać w taki sam sposób jak na filmie umieszczonym w kursie, a tak nie jest.
  12. Witam, własnie przerabiam ten poradnik na płytce STM32F4 Nucleo F446ZE. Próbowałem zrobic zadanie domowe postępując według poradnika, sugerowałem się także już zzrobioną pracą domową, lecz mam problem. Nie mam kontroli nad zapalanymi się diodami (posiadam 3: czerwona, niebieska i zielona). Raz zapalają się 2 na raz, raz wszystkie gasną, nie mam takiej sekwencji jak powinna być czyli zapala się jedna, później druga, później trzeba itd. Czy ktoś wie czemu tak może być? Oto mój kod: void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin) { static uint8_t state = 0; if (GPIO_Pin == Button_Pin) { if (state == 1) { HAL_GPIO_TogglePin(Led_Red_GPIO_Port, Led_Red_Pin); // HAL_Delay(0); } else if (state == 2) { HAL_GPIO_TogglePin(Led_Blue_GPIO_Port, Led_Blue_Pin); // HAL_Delay(80); } else if (state == 3) { HAL_GPIO_TogglePin(Led_Green_GPIO_Port, Led_Green_Pin); } ++state; if (state == 4) { state = 0; } } }
×
×
  • Utwórz nowe...