Hej, próbuję przerobić kurs STM32 F1 HAL i na samym początku pojawiły się problemy, a mianowicie od kilku dni próbuję zrobić zadanie 4.1, jednak wszystkie próby kończą się niepowodzeniem. Ma może ktoś zrobione to zadanie i chciałby się nim podzielić oraz sposobem jego rozwiązania? Poniżej mój kod.
Z góry dziękuję!
#include "stm32f1xx.h"
int main(void)
{
SystemCoreClock = 8000000; // taktowanie 8Mhz
HAL_Init();
__HAL_RCC_GPIOA_CLK_ENABLE();
__HAL_RCC_GPIOC_CLK_ENABLE();
GPIO_InitTypeDef gpio; // obiekt gpio będący konfiguracją portów GPIO
gpio.Pin = GPIO_PIN_0|GPIO_PIN_1|GPIO_PIN_2|GPIO_PIN_3|GPIO_PIN_4|
GPIO_PIN_5|GPIO_PIN_6|GPIO_PIN_7|GPIO_PIN_8|GPIO_PIN_9;
gpio.Mode = GPIO_MODE_IT_RISING;
gpio.Pull = GPIO_PULLUP; // rezystory podciągające są wyłączone
gpio.Speed = GPIO_SPEED_FREQ_LOW; // wystarczą nieskie częstotliwości przełączania
HAL_GPIO_Init(GPIOC, &gpio); // inicjalizacja modułu GPIOC
gpio.Pin = GPIO_PIN_13; // konfigurujemy pin 13
gpio.Mode = GPIO_MODE_INPUT; // jako wejście
gpio.Pull = GPIO_PULLUP; // włączamy rezystor podciągający
HAL_GPIO_Init(GPIOC, &gpio); // port GPIOC
while (1) {
if (HAL_GPIO_ReadPin(GPIOC, GPIO_PIN_13) == GPIO_PIN_RESET)
{
uint32_t led = 0;
HAL_GPIO_WritePin(GPIOC, 1 << led, GPIO_PIN_SET); //włącz diode
HAL_Delay(150);
HAL_GPIO_WritePin(GPIOC, 1 << led, GPIO_PIN_RESET); //wyłącz diode
if (++led >= 10)
{ // przejdz do nastepnej
led = 0;
}
else
{
uint32_t led = 10;
HAL_GPIO_WritePin(GPIOC, 1 << led, GPIO_PIN_SET); //włącz diode
HAL_Delay(150);
HAL_GPIO_WritePin(GPIOC, 1 << led, GPIO_PIN_RESET); //wyłącz diode
if (--led >= 10)
{ // przejdz do nastepnej
led = 10;
}
}
}
}
}