m9ciek Napisano Luty 8, 2020 Udostępnij Napisano Luty 8, 2020 Witam, Napisałem program na moduł od adafruit CAP1188, wszystko działa poprawnie lecz tylko podczas trybu debug. Jeżeli odłączę zasilanie i ponownie je podłączę, program przestaje działać. Czym to możę być spowodowane? Brakiem jakiegoś początkowego resetu czy raczej problem z wewnętrznymi timerami? Poniżej dodaję kod programu, kod wygenerowany przez Cube pominąłem. #include "main.h" /* Private includes ----------------------------------------------------------*/ /* USER CODE BEGIN Includes */ /* USER CODE END Includes */ /* Private typedef -----------------------------------------------------------*/ /* USER CODE BEGIN PTD */ #define CAP_SET_ADDRESS_POINTER 0x7D #define CAP_READ 0x7F #define CAP_WRITE 0x7E #define CAP_RESET 0x7A /* USER CODE END PTD */ /* Private define ------------------------------------------------------------*/ /* USER CODE BEGIN PD */ /* USER CODE END PD */ /* Private macro -------------------------------------------------------------*/ /* USER CODE BEGIN PM */ /* USER CODE END PM */ /* Private variables ---------------------------------------------------------*/ SPI_HandleTypeDef hspi1; /* USER CODE BEGIN PV */ /* USER CODE END PV */ /* Private function prototypes -----------------------------------------------*/ void SystemClock_Config(void); static void MX_GPIO_Init(void); static void MX_SPI1_Init(void); /* USER CODE BEGIN PFP */ /* USER CODE END PFP */ /* Private user code ---------------------------------------------------------*/ /* USER CODE BEGIN 0 */ uint8_t spiData[7]; //testing uint8_t ledData[4]; uint8_t touchData[4]; uint8_t resetData[2]; void reset_cap(){ HAL_GPIO_WritePin(GPIOA,GPIO_PIN_9,GPIO_PIN_RESET); resetData[0] = CAP_RESET; resetData[1] = CAP_RESET; HAL_SPI_Transmit(&hspi1,resetData,2,10); HAL_GPIO_WritePin(GPIOA,GPIO_PIN_9,GPIO_PIN_SET); } void set_touch_sensitivity(){ HAL_GPIO_WritePin(GPIOA,GPIO_PIN_9,GPIO_PIN_RESET); touchData[0]=CAP_SET_ADDRESS_POINTER; touchData[1]=0x1F; touchData[2]=CAP_WRITE; touchData[3]=0x7F; //0x6F - 2x multiplier almost the least sensitive HAL_SPI_Transmit(&hspi1,touchData,4,10); HAL_GPIO_WritePin(GPIOA,GPIO_PIN_9,GPIO_PIN_SET); } void connect_led_to_touch(){ HAL_GPIO_WritePin(GPIOA,GPIO_PIN_9,GPIO_PIN_RESET); resetData[0] = CAP_RESET; resetData[1] = CAP_RESET; HAL_SPI_Transmit(&hspi1,resetData,2,10); ledData[0]=CAP_SET_ADDRESS_POINTER; ledData[1]=0x72; ledData[2]=CAP_WRITE; ledData[3]=0xff; HAL_SPI_Transmit(&hspi1,ledData,4,10); HAL_GPIO_WritePin(GPIOA,GPIO_PIN_9,GPIO_PIN_SET); } uint8_t diode_status(){ HAL_GPIO_WritePin(GPIOA,GPIO_PIN_9,GPIO_PIN_RESET); ledData[0]=CAP_SET_ADDRESS_POINTER; ledData[1]=0x72; ledData[2]=CAP_READ; HAL_SPI_Transmit(&hspi1,ledData,3,10); HAL_SPI_Receive(&hspi1,&spiData[3],1,10); HAL_GPIO_WritePin(GPIOA,GPIO_PIN_9,GPIO_PIN_SET); return spiData[3]; } /* USER CODE END 0 */ /** * @brief The application entry point. * @retval int */ int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config(); /* USER CODE BEGIN SysInit */ /* USER CODE END SysInit */ /* Initialize all configured peripherals */ MX_GPIO_Init(); MX_SPI1_Init(); /* USER CODE BEGIN 2 */ HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,GPIO_PIN_SET); HAL_GPIO_WritePin(GPIOA,GPIO_PIN_8,GPIO_PIN_RESET); HAL_GPIO_WritePin(GPIOA,GPIO_PIN_9,GPIO_PIN_SET); HAL_Delay(10); reset_cap(); set_touch_sensitivity(); /* USER CODE END 2 */ /* Infinite loop */ /* USER CODE BEGIN WHILE */ while (1) { connect_led_to_touch(); /* USER CODE END WHILE */ /* USER CODE BEGIN 3 */ } /* USER CODE END 3 */ } Link do komentarza Share on other sites More sharing options...
ps19 Luty 13, 2020 Udostępnij Luty 13, 2020 Sprawdź konfigurację pinu BOOT STMa 2 Link do komentarza Share on other sites More sharing options...
Pomocna odpowiedź
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ę »