Я только начал учиться программировать с помощью платы Nucleo и решил выполнить простую задачу. Когда я нажимаю кнопку пользователя, я хочу, чтобы мой светодиод загорелся (выключился в начале). У меня есть следующие проблемы, и я не совсем уверен, каков ответ. Мне интересно, относится ли это к STM32 или это тонкость, которую я не понимаю.
Я запускаю следующий код. Я спрашиваю, что в настоящее время мой светодиод всегда включен, и только когда я нажимаю пользовательскую кнопку, он гаснет. Для меня не имеет смысла, что когда я нажимаю кнопку, значение моего PinState = 0. Я думал, что оно должно быть равным единице.
заранее спасибо
#include "stm32f4xx.h"
#include "stm32f4xx_nucleo.h"
#include "system_stm32f4xx.h"
#include "stm32f4xx_hal_gpio.h"
#include "stm32f4xx_hal_rcc.h"
GPIO_InitTypeDef GPIO_InitStructure;
int main(void) {
HAL_Init();
__GPIOA_CLK_ENABLE();
GPIO_InitStructure.Pin = GPIO_PIN_5;
GPIO_InitStructure.Mode = GPIO_MODE_OUTPUT_PP;
GPIO_InitStructure.Pull = GPIO_PULLUP;
GPIO_InitStructure.Speed = GPIO_SPEED_HIGH;
HAL_GPIO_Init(GPIOA, &GPIO_InitStructure);
__GPIOC_CLK_ENABLE();
GPIO_InitStructure.Pin = GPIO_PIN_13;
GPIO_InitStructure.Mode = GPIO_MODE_INPUT;
GPIO_InitStructure.Pull = GPIO_PULLDOWN;
GPIO_InitStructure.Speed = GPIO_SPEED_FAST;
HAL_GPIO_Init(GPIOC, &GPIO_InitStructure);
int PinState;
while (1)
{
PinState = HAL_GPIO_ReadPin(GPIOC,GPIO_PIN_13);
if(PinState == 1){
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5, GPIO_PIN_SET);
}
else {
HAL_GPIO_WritePin(GPIOA,GPIO_PIN_5, GPIO_PIN_RESET);
}
}
}